Konstanten anlegen u. organisieren...
-
Hallo,
hab einige Konstanten in meinem Projekt. Lege ich sie zu Ihrem entsprechenden *.h File bekomme ich stets
Link Error : multiply-defined: 'EGrid' (data) Defined in Boundary.c Defined in Main.c Project: Some Trials, Target: Std C Console Debug
Allerdings hab ich sie nirgends anders deklariert als in der Boundary.h Irgendwas weiß ich noch nicht und mach es flasch...
Danke Winn
-
mach sie in der h als extern und normal in der zugehörigen c
-
Nun sagt er mir:
Error : object 'HGrid' redefined Boundary.c line 7 const unsigned int HGrid = 1; Project: Some Trials, Target: Std C Console Debug, Source File: Boundary.c
Also ich habe insgesamt:
main.c
Coeff.c Coeff.h
Boundary.c Boundary.hMeine Konstanten habe ich in der Boundary.h als "extern const Variable" abgelegt und als "const Variable" in die Boundary.c / Muß ich vielleicht ein übergeordnetes File anlegen ?
Danke erstmal, Winn
-
überall, wo du die var benötigst, ein extern const bla; (also meistens im header)
und in 1er in genau EINER source datei ohne extern.das extern sagt dem compiler, dass es irgendwo eine variable gibt, die so heißt, wie angegeben.
ohne extern macht der compiler speicher für sie. und weil er jedes unit extra anschaut, würde er, wenn er in jedem unit die var ohne extern sähe, auch in jeder übersetzungseinheit speicher für sie anlegen.
Folge: 10 units mit jeweils einer var x, na da wird sich der linker schön aufregen; es gibt ja keine unterschiede zwischen ihnen
-
Hallo,
das mit dem extern ist zwar richtig, für Konstanten aber nicht nötig.Was ist 'EGrid'? Ich schätze mal keine Konstante (vielleicht zufällig ein const char*?)