问题
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