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