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

标签 c struct global declare c89

我想知道初始化此结构的最佳方法是使用 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/

相关文章:

Javascript Lookbehind 与全局搜索重叠

c++ - 如何从 Windows 中的音频插孔获取输入?

c - C中指向数组赋值的指针

c - QSorting a malloc'd array of structures?

c - 访问结构体内部的结构体变量

c - 在 C 中对结构数组使用基数排序/计数排序?

c++ - 解决一个全局性的

C++ : static method VS global function VS namespace VS

c - 在 char 变量中查找唯一 '1' 位的索引的最有效方法(在 C 中)

将输入的整数更改为定义的常量值