繁体   English   中英

C90:如何在没有 C99 扩展的情况下在 C 中全局初始化此结构

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

我想知道用 C90 初始化这个结构的最佳方法是什么,同时仍然保持整洁。

在我的 header 文件中,将其命名为 test.h,我定义了以下结构:

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

然后我将它声明为外部结构,以便我可以在 .c 文件中全局初始化它:

 extern struct s_test_cfg test_cfg;

现在在 my.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 和英特尔 C 都支持 C99)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM