Подтвердить что ты не робот

C90: Как глобально инициализировать эту структуру в C без расширений C99

Мне было интересно, как лучше всего инициализировать эту структуру с помощью 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, которая также так же чиста, как и этот синтаксис? Спасибо.

4b9b3361

Ответ 1

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

вероятно, самый чистый вариант (не доставляя себя компилятором C99, GCC и Intel C поддерживают C99).