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 :
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 !!
    }
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
 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 }
Ce qui est conforme à ce que j'attendais.

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