C90: How do I globally initialize this struct in C without C99 extensions

ぐ巨炮叔叔 提交于 2019-11-29 10:24:26

问题


I was wondering what the best way to initialize this struct is with C90, while still keeping it neat.

In my header file, call it test.h, I have the following struct defined:

 struct s_test_cfg{
      char *a[3];
      char *b[3];
      char *c[3];
 }

Then I have it declared as an extern struct so that I can initialize it globally in the .c file:

 extern struct s_test_cfg test_cfg;

Now in my .c file, I want to be able to declare something like this globally (obviously what I'm about to write is unsupported in C90):

 struct s_test_cfg test_cfg =
 { .a = {"a", "b", "c"},\
   .b = {"d", "e", "f"},\
   .c = {"g", "h", "i"} };

This obviously makes it very neat and transparent as to what you're trying to do. How can I initialize the global struct in my C file that is also as clean as this syntax? Thanks.


回答1:


struct s_test_cfg test_cfg = {
    { "a", "b", "c" },  /* .a */
    { "d", "e", "f" },  /* .b */
    { "g", "h", "i" },  /* .c */
};

is probably the cleanest option (short of getting yourself a C99 compiler; GCC and Intel C both support C99).



来源:https://stackoverflow.com/questions/6624975/c90-how-do-i-globally-initialize-this-struct-in-c-without-c99-extensions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!