Globale Variable in allen Quelldateien benutzen



  • Hallo,

    ich möchte eine globale Variable in allen Quelldateien benutzen.

    Also schreibe ich in die main.h:

    int variable;
    

    main.cpp:

    #include <stdio.h>
    #include "header1.h"
    #include "main.h"
    
    void main(void)
    {
    	variable=1;
    	setVariable(2);
    }
    

    header1.h:

    void setVariable(int pVariable);
    

    header1.cpp:

    #include <stdio.h>
    #include "main.h"
    #include "header1.h"
    
    void setVariable(int pVariable)
    {
    	variable=pVariable
    }
    

    Dabei bekomme ich die Fehlermeldung

    "int variable" (?variable@@3HA) ist bereits in main.obj definiert.

    Kann mir jemand helfen?

    Danke schonmal!



  • Du brauchst das Schlüsselwort extern .

    Beispiel:
    main.c:

    #include <stdio.h>
    #include "foo.h"
    #include "glob.h"
    
    int var;
    
    int main (int argc, char *argv[]) {
        var = 3;
        printf ("main: %d\n", var);
        foo ();
        return 0;
    }
    

    foo.c:

    #include <stdio.h>
    #include "foo.h"
    #include "glob.h"
    
    int var;
    
    void foo () {
        printf ("foo: %d\n", var);
    }
    

    foo.h:

    void foo (void);
    

    glob.h:

    extern int var;
    

    Bei Ausgaben liefern '3' zurück, verwenden also dieselbe Variable var .



  • Hallo monstermunchkin,

    erst einmal vielen Dank für deine Antwort.

    Es funktioniert leider trotzdem noch nicht. Ich habe bei der main.h das extern vor die Variable geschrieben und in den Quelldateien int variable dazu geschrieben.

    Also;

    main.cpp:

    #include <stdio.h>
    #include "header1.h"
    #include "main.h"
    
    int variable;
    
    void main(void)
    {
        variable=1;
        setVariable(2);
    }
    

    header1.cpp:

    #include <stdio.h>
    #include "main.h"
    #include "header1.h"
    
    int variable;
    
    void setVariable(int pVariable)
    {
        variable=pVariable;
    }
    

    main.h:

    extern int variable;
    

    header1.h:

    void setVariable(int pVariable);
    

    Fehlermeldungen:

    "int variable" (?variable@@3HA) ist bereits in main.obj definiert.

    fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.

    Hab ich was übersehen?



  • Durch einfaches rumprobieren klappt es wenn ich das

    int variable;
    

    aus der main.cpp oder aus der header1.cpp rausnehme.

    Wenn ich es bei beiden rausnehme oder drin lasse meckert der Kompiler.

    Ich habs jetzt bei der main.cpp drin gelassen.

    Vielen Dank für die Hilfe!



  • SpielCind schrieb:

    Wenn ich es bei beiden rausnehme oder drin lasse meckert der Kompiler.

    Welchen Compiler benutzt du denn?



  • Ich benutze

    Visual Studio 2008 Professional Edition (x86 and x64 WoW) - DVD (German)


Anmelden zum Antworten