Variableninitialisierung in Header-Datei
-
Hallo,
hab nochmal ein Problem. Ich bekomme immer diese Fehlermeldung:
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: VAR
MODULE: foo.obj (FOO)Habe diese drei Dateien:
main.c
#include <stdio.h> #include "head.h" void main(){ init(); foo(); } void init(){ var += 5; }
foo.c
#include <stdio.h> #include "head.h" void foo(){ ++var; }
head.h
#include <stdio.h> void init(); void foo(); int var = 5;
Fehlermeldung ist klar, nur frag ich mich wie ich sie umgehe. Zuerst hab ich var auf extern gesetzt und in main.c initialisiert. Dann war die Fehlermeldung weg. Ist das die einzige Möglichkeit den Fehler zu umgehen?
-
Folgendes sollte die Lösung sein:
http://en.wikipedia.org/wiki/Include_guardMfG f.-th.
-
Eigentlich sollte die Lösung nicht der include-guard sein (auch wenn er sicher nicht schadet), dass man
var
nicht im Header sondern im C-File definiert und im Header mittelsextern
deklariert. Natürlich wird man auch globale Variablen vermeiden (wo möglich).
-
In main.c
int var=5;
und in head.h
extern int var;
setzen.
-
Hallo,
das bin dem extern hat bestens funktioniert.
Natürlich wird man auch globale Variablen vermeiden (wo möglich).
Das war auch nur ein Beispielprogramm. Hab mittlerweile auch herausgefunden, dass man globale Variablen möglichst vermeiden sollte.