C/C++ Initialisation de structure
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

C/C++ Initialisation de structure



  1. #1
    Médiat

    C/C++ Initialisation de structure


    ------

    Bonjour,

    J'ai une structure définie comme :
    Code:
    typedef struct
    {
      char  MaterialName[20];
      float MaterialAmbient[4];
      float MaterialDiffuse[4];
      float MaterialSpecular[4];
      float MaterialShininess;
    }Material;
    Et un tableau de telles structures :
    Material myMaterial[MAT_DERNIER - 1];

    Quel est le meilleur moyen d'initialiser ce tableau avec les valeurs voulues ?
    Idéalement un truc du genre :
    Code:
    myMaterial[MAT_BRASS]  = {"Brass", {0.329412, 0.223529, 0.027451, 1.0}, {0.780392, 0.568627, 0.113725, 1.0}, {0.992157, 0.941176, 0.807843, 1.0}, 27.8974};
    Mais cela ne marche pas (error C2059: erreur de syntaxe : '{') ?

    -----
    Dernière modification par gienas ; 05/04/2012 à 20h35. Motif: Ajouté les balises code qui améliorent la lisibilité
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  2. #2
    invite4492c379

    Re : C/C++ Initialisation de structure

    Hello,

    ça va dépendre en partie de ton compilo (que c ou c++, C89/C99, ...)

    Le plus simple pour palier toute erreur ou mécompréhension essaye simplement d'initialiser champs par champs ?
    Sinon peut être un :
    Code:
    myMaterial[MAT_BRASS] = { .MaterialName="Brass", .MaterialAmbient={0.32 .......

  3. #3
    lucas.gautheron

    Re : C/C++ Initialisation de structure

    Bonsoir,
    Sinon tu ne peux pas tout initialiser à la fois (j'imagine que non sinon tu y aurais pensé, mais bon on sait jamais ) ? càd:

    Code:
    Material myMaterial[MAT_DERNIER - 1] =
    {
        // [...]
        {"Brass", {0.329412, 0.223529, 0.027451, 1.0}, {0.780392, 0.568627, 0.113725, 1.0}, {0.992157, 0.941176, 0.807843, 1.0}, 27.8974},
        // [...]
    };

  4. #4
    Médiat

    Re : C/C++ Initialisation de structure

    Citation Envoyé par lucas.gautheron Voir le message
    Bonsoir,
    Sinon tu ne peux pas tout initialiser à la fois (j'imagine que non sinon tu y aurais pensé, mais bon on sait jamais )
    La preuve est faite, mon âge m'a rattrapé : ça marche impeccable.

    Merci beaucoup !
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  5. A voir en vidéo sur Futura
  6. #5
    gienas
    Modérateur

    Re : C/C++ Initialisation de structure

    Bonsoir Médiat et tout le groupe

    Citation Envoyé par Médiat Voir le message
    ... cela ne marche pas (error C2059: erreur de syntaxe : '{') ?
    Peux-tu essayer, sans mettre du tout d'accolade.

    L'erreur te signale qu'elle n'aime pas celle qui ouvre, donc, la première.

  7. #6
    Médiat

    Re : C/C++ Initialisation de structure

    Citation Envoyé par photon57 Voir le message
    Hello,

    ça va dépendre en partie de ton compilo (que c ou c++, C89/C99, ...)

    Le plus simple pour palier toute erreur ou mécompréhension essaye simplement d'initialiser champs par champs ?
    Sinon peut être un :
    Code:
    myMaterial[MAT_BRASS] = { .MaterialName="Brass", .MaterialAmbient={0.32 .......
    Merci, mais justement je voulais éviter de saisir le nom des champs à chaque fois.
    Dernière modification par Médiat ; 05/04/2012 à 20h48.
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  8. #7
    Médiat

    Re : C/C++ Initialisation de structure

    Citation Envoyé par gienas Voir le message
    Bonsoir Médiat et tout le groupe

    Peux-tu essayer, sans mettre du tout d'accolade.

    L'erreur te signale qu'elle n'aime pas celle qui ouvre, donc, la première.
    Merci pour les balises code.

    Sinon, le retrait de l'accolade aggrave les choses .

    Par contre la solution de lucas.gautheron fonctionne très bien, il faut juste faire attention de mettre les différents éléments dans le bon ordre.
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  9. #8
    gienas
    Modérateur

    Re : C/C++ Initialisation de structure

    Citation Envoyé par Médiat Voir le message
    ... le retrait de l'accolade aggrave les choses ...
    Et que se passe-t-il si tu ne supprimes que les internes? (un peu comme à l'image de ta déclaration)

  10. #9
    Médiat

    Re : C/C++ Initialisation de structure

    Pas mieux :


    Code:
    1>vc_01.cpp(1954): error C2059: erreur de syntaxe : '{'
    1>vc_01.cpp(1954): error C2143: erreur de syntaxe : absence de ';' avant '{'
    1>vc_01.cpp(1954): error C2143: erreur de syntaxe : absence de ';' avant '}'
    Je suis Charlie.
    J'affirme péremptoirement que toute affirmation péremptoire est fausse

  11. #10
    lucas.gautheron

    Re : C/C++ Initialisation de structure

    Citation Envoyé par Médiat Voir le message
    Merci pour les balises code.

    Sinon, le retrait de l'accolade aggrave les choses .

    Par contre la solution de lucas.gautheron fonctionne très bien, il faut juste faire attention de mettre les différents éléments dans le bon ordre.
    Oui, c'est sur que ce n'est pas très lisible...
    Ca me rappelle un projet ou on avait le même soucis, résolu comme ça :
    Code:
    guninfo guns[NUMGUNS] =
    {
        //modelname                   reload       attackdelay     projspeed   spread     magsize      mKB       reB               reF         isauto
        //              sound                reloadtime        damage        part    recoil        mKR      reI          reM           pFX
        { "knife",      S_KNIFE,      S_NULL,     0,      500,    50,     0,   0,  1,    1,   1,    0,  0,    0,  0,      0,      0,    1,      false },
        { "pistol",     S_PISTOL,     S_RPISTOL,  1400,   160,    18,     0,   0, 53,   10,   10,   6,  5,    6,  35,     58,     125,  1,      false },
        // [...]
    };
    (voir toute fin du fichier https://actiongame.svn.sourceforge.n...e/src/server.h si le formatage bbcode foire)
    Dernière modification par lucas.gautheron ; 05/04/2012 à 21h03.

Discussions similaires

  1. Initialisation SDHC
    Par tontonflo38 dans le forum Électronique
    Réponses: 6
    Dernier message: 28/12/2010, 14h30
  2. Initialisation à l'allumage
    Par invite6de5f0ac dans le forum Électronique
    Réponses: 3
    Dernier message: 30/04/2009, 12h40
  3. initialisation du PCF8583
    Par invite28559ad9 dans le forum Électronique
    Réponses: 3
    Dernier message: 23/12/2008, 20h44
  4. problème initialisation radiateur
    Par invitece50d5be dans le forum Dépannage
    Réponses: 0
    Dernier message: 31/12/2005, 11h34
  5. Initialisation d'un cancer
    Par inviteb1db5ee8 dans le forum Biologie
    Réponses: 2
    Dernier message: 01/01/2005, 22h06