Bonjour,
une question de syntaxe (aux limites de ma connaissance du C) à propos de l'initialisation d'une structure :
Voici mon type struct et son initialisation statique :La déclaration de io1 ne pose pas de problème et le debugger me donne sa valeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 typedef struct { struct { INT32 id,size ; INT32 datum[5] ; } data [3] ; } tIOdata ; void foo ( void ) { tIOdata io1 = {{ 12,3,{11,22,33}}} ; tIOdata io2 = {{ 12,3,{11,22,33}},{ 13,3,{44,55,66}}} ; // erreur !! tIOdata io3 = {{12,5,{1,2,3,4,5}},{13,5,{1,2,3,4,5}},{14,5,{1,2,3,4,5}}} ; // erreur !! }Ce qui est conforme à ce que j'attendais.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 io1 data [0] id = 12 size = 3 datum = { 11, 22, 33, 0, 0 } [1] id = 0 size = 0 datum = { 0, 0, 0, 0, 0 } [2] id = 0 size = 0 datum = { 0, 0, 0, 0, 0 }
En revanche, la déclaration de io2 échoue : le compilateur (visual 2005) me dit : "error C2078: initialiseurs trop nombreux".
Et là, je ne comprend pas...
(même io3 qui ne laisse aucun champ "au hasard" ne passe pas)
Si quelqu'un a une idée, je suis preneur !
merci d'avance,
Hadrien
Partager