Variablendeklaration und -definition



  • Ich möchte gerne mal wissen wie man es richtig macht:

    Wenn ich eine globale Variable verwenden möchte (ich versuche das zu vermeiden, kommt aber gelegentlich vor) schreibe ich am Anfang außerhalb jeder Funktion in einer .c-Datei beispielsweise

    int i;
    

    Dadurch kann ich in jeder Funktion innerhalb dieser Quelldatei diese Variable nutzen. Soweit habe ich das verstanden.

    Nun zu meinen Problemen:

    Möchte ich diese Variable in anderen Quelldateien nutzen muß ich diese Codezeile nicht mehr in der .c-Datei unterbringen, sondern in der zugehörigen .h-Datei. Soweit so gut kniffelig wird es nun: Wenn ich die Variable beispielsweise mit 0 vordefinieren will, also zum Bsp. so:

    int i = 0;
    

    dann geht das in der .h Datei nicht, da es sich dabei um eine Zuweisung handelt.
    Stimmt es wenn ich es so mache:

    in der .c-Datei

    int i = 0;
    

    und in der .h-Datei

    extern int i;
    

    ?
    Oder wie funktioniert das richtig?



  • "Möchte ich diese Variable in anderen Quelldateien nutzen muß ich diese Codezeile nicht mehr in der .c-Datei unterbringen, sondern in der zugehörigen .h-Datei."

    Falsch.
    Wenn du zwei *.c Files hast, "int i;" in eine Header schreibst und die Header bei beiden *.c Files includierst, hast du in jeder *.c Datei ne Variable mit Namen i. Wenn du in main.c i = 10; machst, dann wird i in der zweiten *.c Datei nicht geändert.

    Mache es so:

    *.c File:

    int i = 5

    *.h File:

    extern int i;

    dann kannst du in jeder *.c Datei, die die Header includiert auch i benutzen.


Log in to reply