2015-04-02 136 views
3

我们正在开始一个相当大的项目,其中涉及不同语言的部分。我们决定将编译时的某个部分从JSON转换为必要的C structs(以及其他系统部分的其他结构)。C中的静态构造函数

该结构在.h中定义,声明将类似于const static struct MCSCommandOptionsMessage mcs_command_message_list[] =,然后是所需格式的参数列表。

现在的问题是:如果自动生成的结构声明文件是.h,还是只有这个结构有.c更好?为什么?

+0

需要包含多少个文件?如果不止一个,你不能在头文件中声明这个声明,因为至少链接器会报错。 – user1666959 2015-04-02 10:53:01

回答

2

双方将是可能的,申报的.h或只有一个.c文件中可以访问结构。如果结构定义类似于接口和/或您生成几个结构,如果将它们放在.h文件中会很好。它将定义合同。如果存在多个结构实例,则必须将结构定义放入.h文件中。

如果你想表达隔离并强调该结构是私人事务,那么你可以在.c文件中定义它。

0

通常.h文件被用作“包含”文件,并且不是直接编译的,这是因为它们中的代码不应该改变,因为它们应该定义一个接口。请记住,如果结构中有任何更改并且它们位于.h文件中,那么您必须重新编译使用该结构的任何内容。如果结构在.c文件中,那么每次编译时都会重新编译。

此外,如果结构是在.h文件,你可以方便地用它在不同的.c文件

+0

在C中,关键字static表示私有。没有不同的.c文件可以访问结构。 – harper 2015-04-02 10:49:38