problem mit globalen variablen in headern....
-
hi folks!
ich habe zum ersten mal ein projekt begonnen das nicht nur aus einem .c-file besteht.
stattdessen habe ich 5 .c-files und 2 header (main.h und config.h)...das problem ist, dass der compiler (bzw. der linker) dauernd meckert das irgendwelche globalen variablen re-deklariert wurden (fehlermeldung etwa wie "... already declared here".
meine .h-files benutzen den "include-guard" oder wie auch immer das heisst ("ifndef _FILE_H_" ...), also daran scheint es nicht zu liegen.
also jedes .c-file included die main.h, welche wiederum die config.h included. die main.h included auch alle benötigten standard-header (stdio & co)...
compilen tu ich mit dem DevCpp 5 beta.
hoffe ihr könnt mir da helfen...
mfg,
---loki
-
In header Dateien, die mehrmals includiert werden sollen auch keine globale Variable definiert werden, sonst werden sie 2 mal deklariert und deshalb der Fehler. Wenn du aber trotzdem globale haben willst, dann musst du in der Header Datei mit extern deklarieren
/* in einer hallo.h datei */ #ifndef HALLO #define HALLO extern int global_x; void ausgabe(); #endif
Eine der .c Dateien, die die hallo.h includieren muss
/* in hallo.c */ #include "hallo.h" int global_x; int main() { global_c=9; ausgabe(); return 0; }
/* in ausgabe.c */ #include "hallo.h" void ausgabe() { printf("Die globale var ist: %d\n", gloabl_x); }
haben, die anderen brauchen das nicht mehr. Beim Kompilieren ist ja egal, wo die Variable deklariert ist, weil sie als extern in der Header Datei steht. Erst der Linker kümmert sich drum.
-
danke. hat mir sehr geholfen!