Ответ 1
struct s_test_cfg test_cfg = {
{ "a", "b", "c" }, /* .a */
{ "d", "e", "f" }, /* .b */
{ "g", "h", "i" }, /* .c */
};
вероятно, самый чистый вариант (не доставляя себя компилятором C99, GCC и Intel 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, которая также так же чиста, как и этот синтаксис? Спасибо.
struct s_test_cfg test_cfg = {
{ "a", "b", "c" }, /* .a */
{ "d", "e", "f" }, /* .b */
{ "g", "h", "i" }, /* .c */
};
вероятно, самый чистый вариант (не доставляя себя компилятором C99, GCC и Intel C поддерживают C99).