Jac*_*ack 3 c struct global declare c89
我想知道用C90初始化这个结构的最好方法是什么,同时仍保持整洁.
在我的头文件中,将其命名为test.h,我定义了以下结构:
struct s_test_cfg{
char *a[3];
char *b[3];
char *c[3];
}
Run Code Online (Sandbox Code Playgroud)
然后我将它声明为extern结构,以便我可以在.c文件中全局初始化它:
extern struct s_test_cfg test_cfg;
Run Code Online (Sandbox Code Playgroud)
现在在我的.c文件中,我希望能够在全局范围内声明这样的东西(很明显我要编写的内容在C90中不受支持):
struct s_test_cfg test_cfg =
{ .a = {"a", "b", "c"},\
.b = {"d", "e", "f"},\
.c = {"g", "h", "i"} };
Run Code Online (Sandbox Code Playgroud)
这显然使你对你想要做的事情非常整洁和透明.如何初始化我的C文件中的全局结构,该结构也像这种语法一样干净?谢谢.
struct s_test_cfg test_cfg = {
{ "a", "b", "c" }, /* .a */
{ "d", "e", "f" }, /* .b */
{ "g", "h", "i" }, /* .c */
};
Run Code Online (Sandbox Code Playgroud)
可能是最干净的选择(没有让自己成为C99编译器; GCC和Intel C都支持C99).