我们正在开展一个涉及不同语言部分的大项目。我们决定在编译时将某个部分从JSON
翻译成必要的C structs
(以及其他系统部分的其他结构)。
结构在.h
中定义,声明类似于const static struct MCSCommandOptionsMessage mcs_command_message_list[] =
,然后是所需格式的参数列表。
问题是:带结构声明的自动生成文件应该是.h
,还是仅仅为此结构设置.c
更好?为什么呢?
答案 0 :(得分:2)
两者都是可能的,在.h或只有一个.c文件中的声明可以访问结构。如果结构定义类似于接口和/或生成多个结构,如果将它们放在.h文件中是好的。它将定义合同。如果存在结构的多个实例,则必须将结构定义放在.h文件中。
如果您要表达Isolation并强调结构是私有的,您可以在.c文件中定义它。
答案 1 :(得分:0)
通常.h文件用作" include"文件并没有直接编译,这是因为它们中的代码不应该改变,因为它们应该定义一个接口。请记住,如果结构中有任何更改,并且它们位于.h文件中,那么您必须重新编译使用该结构的任何内容。如果结构位于.c文件中,则每次编译时都会重新编译。
此外,如果结构位于.h文件中,您可以在不同的.c文件中轻松使用它