簡體   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