Array initialisieren



  • Versuche in der Headerdatei ein Array mit festen Werten zu initialisieren.
    Doch das klappt nicht.
    Rufe ich den Code im Quelltext auf geht es.
    Ich möchte die Daten aber nur einmal ins Array schreiben und später immer wieder darauf zugreifen. Deshalb wollte ich sie als globale Variable.
    Hier die initialisierung:

    int TestArray[] = {0x0D,0x30,0x31};
    

    Was mache ich falsch?
    Mfg



  • 1. Falsches Forum
    2. In einer Header-Datei definiert man keine Variablen.

    Header:

    extern int TestArray[3];
    

    Source:

    int TestArray[3] = {0x0D,0x30,0x31};
    


  • Wenn ich

    extern int TestArray[3];
    

    In die Headerdatei schreibe bekomme ich immer noch einen Fehler.
    Es sagt
    [quote]Ungültige Speicherklasse[code]



  • Header:

    extern int* TestArray;
    

    Source:

    int* TestArray = {0x0D,0x30,0x31};
    

    Probier es so.



  • Leider immer noch der gleiche Fehler



  • Ach hab das gerade vertauscht. Kommt davon wenn man gleichzeitig schreibt und fern sieht :p

    Header:

    int TestArray[3];
    

    Source:

    extern int TestArray[3] = {0x0D,0x30,0x31};
    

    *edit* ne, vorher war's doch richtig? Benutze extern so selten. Verwende lieber Klassen, wenn du globale Variablen möchtest.



  • Lösche in der Header datei die Zeile:
    Header:

    extern int* TestArray;
    

    und schreib das folgende an den Anfang deiner cpp nach den includes:

    Source:

    int TestArray[3] = {0x0D,0x30,0x31};
    

    Aber Achtung globale Variablen sind nie gut. Meistens geht das lokal zu machen und ist dann auch sicherer.

    Gruß



  • CTecS schrieb:

    Lösche in der Header datei die Zeile:
    Header:

    extern int* TestArray;
    

    und schreib das folgende an den Anfang deiner cpp nach den includes:

    Source:

    int TestArray[3] = {0x0D,0x30,0x31};
    

    Aber Achtung globale Variablen sind nie gut. Meistens geht das lokal zu machen und ist dann auch sicherer.

    Gruß

    Er möchte die Variable global über alle Quelldateien verfügbar haben, was bei deinem Beispiel nicht der Fall ist.



  • Wohl kaum, wenn er die Variable global über mehrere Sourcen haben will, dann wird die einmal definiert in einer Sourcedatei und dann mit extern in den entspechenden Sourcedateien eingebunden. Das geht auch mit Klassen.

    Gruß



  • Bei statischen Klassenvariablen ist ein extern nicht nötig. Und weil er extern verwenden muss, wollte ich es direkt in die Header-Datei schreiben. Ich weiß aber nicht, wie C++ bei folgendem reagiert:

    extern int a;
    int a;
    

    (in der gleichen Datei)



  • Beschweren tut er sich nicht, aber das ist gefährlich wenn a schon mal definiert wurde (global /lokal) und wenn es etwas statisch haben will, dann soll er es als solches auch deklarieren (static) geht über all und ist dann auch statisch.

    Gruß


Anmelden zum Antworten