我想知道初始化此结构的最佳方法是使用 C90,同时仍保持其整洁。
在我的头文件中,将其命名为 test.h,我定义了以下结构:
struct s_test_cfg{
char *a[3];
char *b[3];
char *c[3];
}
然后我将它声明为外部结构,以便我可以在 .c 文件中全局初始化它:
extern struct s_test_cfg test_cfg;
现在在我的 .c 文件中,我希望能够在全局范围内声明类似这样的内容(显然我将要编写的内容在 C90 中不受支持):
struct s_test_cfg test_cfg =
{ .a = {"a", "b", "c"},\
.b = {"d", "e", "f"},\
.c = {"g", "h", "i"} };
这显然使您想要做的事情变得非常简洁和透明。如何在我的 C 文件中初始化与此语法一样干净的全局结构?谢谢。
最佳答案
struct s_test_cfg test_cfg = {
{ "a", "b", "c" }, /* .a */
{ "d", "e", "f" }, /* .b */
{ "g", "h", "i" }, /* .c */
};
可能是最干净的选择(除了让自己拥有 C99 编译器;GCC 和 Intel C 都支持 C99)。
关于C90 : How do I globally initialize this struct in C without C99 extensions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624975/