Globale Konstante, in mehereren CppDateien



  • Hallo ich habe eine Konstate cX, die in einer Header Datei TTT.h definiert wurde, diese wird nun in zahlreiche andere Cpp-Files inkludiert...

    Mein Linker meckert jetzt, das cX (also die Konstante) bereits definiert ist...

    habt ihr dazu ne Lösung... ?

    Hab auch probiert da einfach 'extern' vorzusetzen, aber das hat auch nich gefunzt...

    PS: cX ist etwa so definiert:

    // TTT.h:
    extern const char *cX[] = 
    {
       "Vielen",
       "Dank",
       "schonmal",
       "!!!!!!"
     // uvm.
    }
    


  • Hallo

    das extern ist schon richtig.
    Nur darfst du in dem header die Variable nur dekalrieren, die Implementation und die Initialiation muß in die Imp-Datei

    // TTT.h:
    extern const char *cX[];
    
    // TTT.cpp
    const char *cX[] =
    {
       "Vielen",
       "Dank",
       "schonmal",
       "!!!!!!"
     // uvm.
    }
    

    bis bald
    akari



  • GlobalRenderer schrieb:

    Hallo ich habe eine Konstate cX, die in einer Header Datei TTT.h definiert wurde, diese wird nun in zahlreiche andere Cpp-Files inkludiert...

    Mein Linker meckert jetzt, das cX (also die Konstante) bereits definiert ist...

    Hab auch probiert da einfach 'extern' vorzusetzen, aber das hat auch nich gefunzt...

    Du hast die Definition der Variablen in der .h, Definitionen in .h-Dateien sind böse, weil jede .cpp die Definition übernimmt und der Linker meckert dann.
    Also: Niemals Code in Headerdateien packen.

    Du brauchst eine Deklaration und das sieht wie folgt aus:

    // TTT.h:
    
    extern char const * cX[];    // Deklaration: extern + keine Zuweisung.
    
    /// TTT.cpp
    const char *cX[] =           // Definition: kein extern, Zuweisung möglich.
    {
       "Vielen",
       "Dank",
       "schonmal",
       "!!!!!!"
     // uvm.
    }
    

    [/quote]



  • jo danke euch beiden...ich wusste das man das so trennen muss, war nur nicht sicher wegen der Konstante... :p dank nm


Anmelden zum Antworten