4

この構造体を初期化するための最良の方法は、それをきちんと保ちながら、C90を使用することです。

私のヘッダーファイルでは、それをtest.hと呼び、次の構造体を定義しています。

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

次に、それをextern構造体として宣言して、.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ファイルのグローバル構造体を初期化するにはどうすればよいですか?ありがとう。

4

1 に答える 1

8
struct s_test_cfg test_cfg = {
    { "a", "b", "c" },  /* .a */
    { "d", "e", "f" },  /* .b */
    { "g", "h", "i" },  /* .c */
};

おそらく最もクリーンなオプションです(C99コンパイラを入手することはできません。GCCとIntel CはどちらもC99をサポートしています)。

于 2011-07-08T13:20:24.750 に答える