Konstantes Strukturelement initialisieren?



  • Wie bzw. wann kann ich ein Array, das Teil einer Struktur sein soll, mit konstanten Werten initialisieren. Ich habe versucht:

    typedef struct{
    const unsigned firstIdx[NUMBER_OF_PLAYERS] = {1,17};
    }myStruct, *p_myStruct;
    

    ... aber der Compiler verweigert die Übersetzung.
    Ist es möglich, dass man so ein Array irgendwie initialisiert?
    Wie muss ich vorgehen?



  • Das geht nicht. Initialisieren geht dann (und nur dann) wenn du die Variable definierst.

    Also:

    typedef struct{
      const unsigned firstIdx[NUMBER_OF_PLAYERS];
    }myStruct, *p_myStruct;
    
    int main(void) {
      myStruct s = {{1, 17}};
    }
    

    Wenn du 1 und 17 nicht immer dazuschreiben willst, kannst du ja eine Funktion schreiben, die das macht.



  • #define NUMBER_OF_PLAYERS 15
    
    typedef struct{
        const unsigned int firstIdx[NUMBER_OF_PLAYERS];
    }myStruct, *p_myStruct;
    
    myStruct xyz = {
        {1,17}
    };
    
    int main(void) {
        printf("%d\n",xyz.firstIdx[0]);
        printf("%d\n",xyz.firstIdx[1]);
    }
    

    ups...


Anmelden zum Antworten