Hallo,
ich schreibe grade an einem kleine Projekt. Alle Projekt weit einheitlichen globalen Konstanten werden in einer zentralen Header-Datei 'settings.h' deklariert.
Diese ist wie man sieht mit einem Include Wächter versehen:
#ifndef _SETTINGS_ #define _SETTINGS_ //simulation parameters: const int iNROWS = 6; const int iNCOLUMNS = 6; const int iNROUNDS = 10; const int iCRITICALVALUE = 4; //output files: [b]const char* FILE_BARCHART3DDATA = "./output/BarChart3DData.txt";[/b] //const parameters: const int iDEBUGMODE = 1; #endif
Die Datei wird an vier verschiedenen Stellen in verschiedene Module per '#include' eingebunden.
Für mich überraschend tritt seit ich die markierte Zeile eingefügt habe beim Kompilieren ein Fehler auf:
/tmp/cc8XeMmj.o:(.data+0x4): multiple definition of `FILE_BARCHART3DDATA' /tmp/cclxtr5J.o:(.data+0x0): first defined here /tmp/ccKQOoZx.o:(.data+0x0): multiple definition of `FILE_BARCHART3DDATA' /tmp/cclxtr5J.o:(.data+0x0): first defined here /tmp/cc0nFkov.o:(.data+0x0): multiple definition of `FILE_BARCHART3DDATA' /tmp/cclxtr5J.o:(.data+0x0): first defined here collect2: ld returned 1 exit status
Der in den Include-Wächter eingeschlossene Block wird also scheinbar doch mehrfach durchlaufen ?!
Wie vermeide ich diesen Fehler?
Und wann werden die in dieser Header-Datei declarierten Variablen überhaupt initialisiert, beim Aufruf von 'main' ?
DANKE!