Servus, ich habe meine main und dazu eine header datei in der ich die Prototypen nenne und eine weitere .c Datei in der ich die Funktionen definiere. Nun muss ich eine Variable in der main und der weiteren .c Datei verwenden. Dann muss man diese doch als extern festlegen oder nicht? Aber ich welchen Dateien muss ich sie dann deklarieren?
ichbins schrieb: > Aber ich welchen Dateien muss ich sie dann deklarieren? Auch im Header, genau wie die Funktionen.
Rolf M. schrieb: > Auch im Header, genau wie die Funktionen. Habe sie dort folgendermaßen deklariert und initialisiert: extern int variable=0; Dann kommt aber die Meldung: 'extern' variable has an initializer
ichbins schrieb: > Rolf M. schrieb: >> Auch im Header, genau wie die Funktionen. > > Habe sie dort folgendermaßen deklariert und initialisiert: > extern int variable=0; > > Dann kommt aber die Meldung: > 'extern' variable has an initializer Die Meldung ist doch eigentlich recht klar. Warum willst du sie dort initialisieren, wo du sie deklarierst? Das gehört da nicht hin, genausowenig wie da z.B. der Inhalt deiner Funktionen hingehört, sondern nur lediglich die Deklaration und sonst nix.
Und wo gebe ich ihr dann einen Wert? Bevor ich sie irgendwo verwende, muss ich sie doch initialisieren?
main.h: extern int var; main.c: int var = 42;
Walter schrieb: > main.h: > extern int var; > > main.c: > int var = 42; Kann ich sie dann auch in der weiteren .c Datei verwenden oder muss ich sie dort auch nochmal deklarieren? (Initialisieren darf ich ja kein zweites Mal)
ichbins schrieb: > Walter schrieb: > main.h: > extern int var; > main.c: > int var = 42; > > Kann ich sie dann auch in der weiteren .c Datei verwenden oder muss ich > sie dort auch nochmal deklarieren? (Initialisieren darf ich ja kein > zweites Mal) Warum probierst du es nicht einfach? Die Variable ist nach dieser Initialisierung global und muss nicht ein weiteres Mal deklariert werden.
Aber die main.h (mit dem extern int var;) muss per include in die anderen C-Files eingebunden werden, wenn man sie dort verwenden möchte. Blackbird
ichbins schrieb: > Walter schrieb: >> main.h: >> extern int var; >> >> main.c: >> int var = 42; > > Kann ich sie dann auch in der weiteren .c Datei verwenden oder muss ich > sie dort auch nochmal deklarieren? (Initialisieren darf ich ja kein > zweites Mal) Verwechselst du deklarieren und definieren? Wenn du main.h in deinen anderen .c-Dateien "includest", dann ist die Variable (durch das extern) da auch deklariert. Definieren darfst du sie nure einmal. Und das in einer .c Datei.
ichbins schrieb: > Und wo gebe ich ihr dann einen Wert? Bevor ich sie irgendwo verwende, > muss ich sie doch initialisieren? Na da wo du sie definierst, genauso wie du der Funktion ihren Code gibst. Es ist bei beiden genau das Gleiche: Im Header gibst du nur Name und Typ bekannt, im C-File ist dann der eigentliche Inhalt. Header:
1 | // Deklarationen
|
2 | extern int var; |
3 | void func(void); |
C-File:
1 | // Definition
|
2 | int var = 3; |
3 | void func(void) { printf("Hello, world\n"); } |
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.