2015-04-02 5 views
3

Мы начинаем довольно большой проект, который включает в себя части на разных языках. Мы решили перенести определенную часть во время компиляции с JSON на нужный C structs (и другие структуры для остальных частей системы).Статические конструкции const в C

Структура определена в .h, и декларация будет выглядеть как const static struct MCSCommandOptionsMessage mcs_command_message_list[] =, а затем список параметров в требуемом формате.

Вопрос: должен ли автогенерируемый файл с объявлением структуры быть .h, или лучше иметь .c только для этой структуры? Зачем?

+0

Сколько файлов потребуется для включения? Если более одного, вы не можете иметь объявление в файле заголовка, потому что, по крайней мере, компоновщик будет жаловаться. – user1666959

ответ

2

Как было бы возможно, заявление в .h или в единственном .c файл имеет доступ к структура. Если структура определяет что-то вроде интерфейса и/или вы создаете несколько структур, если было бы хорошо иметь их в файле .h. Он будет определять контракт. Если существует несколько экземпляров структуры, вы должны поместить определение структуры в файл .h.

Если вы хотите выразить Изоляцию и подчеркнуть, что структура - это личное дело, вы можете определить ее в .c файле.

0

Обычно файлы .h используются как «включенные» файлы и не скомпилированы напрямую, это связано с тем, что код в них не должен сильно меняться, поскольку он должен определять интерфейс. Просто помните, что если что-то изменится в структуре и они находятся в файлах .h, тогда вам нужно перекомпилировать все, что использует эту структуру. Если структура была в файле .c, она перекомпилировалась бы каждый раз при компиляции.

Кроме того, если структура находится в файле .h вы можете использовать его легко в различных .c файлов

+0

В C ключевое слово static означает private. Нет никаких других файлов .c, которые обращаются к структуре. – harper

Смежные вопросы