C90: Comment initialiser globalement cette structure en C sans les extensions C99

Je me demandais quelle était la meilleure façon d’initialiser cette structure avec C90, tout en la maintenant nette.

Dans mon fichier d’en-tête, appelez-le test.h, j’ai défini la structure suivante:

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

Ensuite, je le déclare comme une structure externe pour pouvoir l’initialiser globalement dans le fichier .c:

  extern struct s_test_cfg test_cfg; 

Maintenant, dans mon fichier .c, je veux pouvoir déclarer quelque chose comme ceci globalement (évidemment ce que je vais écrire est non supporté en C90):

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

Cela le rend évidemment très net et transparent quant à ce que vous essayez de faire. Comment puis-je initialiser la structure globale dans mon fichier C qui est aussi propre que cette syntaxe? Merci.

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

est probablement l’option la plus propre (à moins de vous procurer un compilateur C99; GCC et Intel C prennent tous deux en charge C99).