Zdravim, resim takovou vec mam tri hlavickove soubory a tri zdrojove, v kazde bych chtel mit jednu promenou treba text
1 . hlavickovy soubor + 1.zdrojovy soubor
text = "neco 1"
2 . hlavickovy soubor + 2.zdrojovy soubor
text = "neco 2"
3 . hlavickovy soubor + 3.zdrojovy soubor
text = "neco 3"
Jde mi o to kdyz deklaruji hlavickovy soubor abych vypsal promenou text a nemusel psat text1,text2,text3 ale nedari se mi to prekladac mi furt pise chyby, Nevite jakym zpusobem by to slo zrealizovat?Pracuji v c, v c++ pomoci trid by to slo hned :-)
no me neni jasny o co se presne snazis... pokud chces mit jednu promennou mezi vicero zdrojakama (ktery se pak slinkujou do jedny binarky - to je ta dulezita cast) tak se pouziva klicove slovo external (a pak v jednom z cpp souboru musi byt ta promenna nadefinovana uz bez external)
Nahlásit jako SPAM
IP: 93.91.152.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kazdy .cpp subor sa kompiluje zvlast (vecsinou do .o suboru). Nasledne tieto subory treba spojit (zlinkovat do jedneho), preto treba pri globalnych premennych udavat klucove slovo extern, aby linker vedel ze sa premenna nachadza v inom module. Akonahle je premenna deklarovana vo viacerych moduloch tak to linker nema sancu pospajat.
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
hm, ja jak mam projekt, tak tam mam main.cpp a pak ty (3 zdrojove soubory a 3 hlavickove)-> to jsem si vytvoril ja, takze chyba je ta ze linker kompliluje vsechny ty zdrojove soubory, proto tam vznika ta kolize s tou promenou text je to tak?
Chyba je v tom ze nevies co robis. Kazda premenna alebo funkica musi byt v danom rozsahu platnosti jasne urcitelna a nesmie kolidovat z inou premennou/funkciou. U premennej to je jej meno, u funkcii je to meno + typy parametrov.
V tvojom pripade mas 3 globalne premenne s rovnakym menom a 3 funkcie s rovnakym menom. Vzhladom na to ze kompilator sa stara len o kompilaciu svojho modulu ( .cpp suboru) a jeho hlaviciek a nevie nic o ostatnych moduloch(.cpp suboroch), tak nevyhodi chybu, ale linker uz ma informacie aj o ostatnych moduloch, tym padom zisti kolizie.
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "