[elektro] C problema, multiply defined symbol
Moczik Gabor
pm-01 at progzmaster.hu
Wed Sep 9 09:35:42 CEST 2009
potyo wrote:
> Én is azt hittem, hogy ha a fájl elején odaírom, hogy pl. unsigned xxx;
> akkor az csak abban a fájlban szereplő függvényekre lesz globális, de a
> többi fájlból nem lesz látható. Viszont most utánaolvasgattam, és azt
> találtam, hogy ha azt akarod, hogy csak abban a fájlban legyen használható,
> akkor elé kell még tenni, hogy static. Ha azt akarod, hogy a többi fájlban
> is elérhető legyen, akkor a többiben meg oda kell tenni, hogy extern.
> Végülis logikus, hogy ha nem írsz static-ot, akkor nem enged több helyen
> azonos nevűt, mert mivan, ha két fájlban is írsz azonos nevű változót, a
> harmadikban meg odapingálod, hogy extern, és akkor nem fogja tudni, hogy
> most melyik változóhoz akarsz hozzáférni...
Hat a static-ot nem tudtam hogy erre is valo.
Nem tunt logikusnak hogy miert pampog, mondvan hogy elofordulhatna egy
kisse nonszensz eset, hogy mondjuk egy (third-party) libraryban valaki
definial egy globalis de nem dokumentalt mondjuk 'counter' nevu
valtozot, akkor azt nekem tudnom kellene a sajat projektem irasakor hogy
ilyen nem lehet.
Abba mondjuk nem gondoltam bele, hogy nem csak a forrashoz/libraryhoz
tartozo header fajlban lehet externkent deklaralni, hanem akarhol.
Jo tudni mondjuk hogy a sajat libekben mindenhol at kene javitani
static-ra, ahol annak kene lennie. :-)
Legutobbi szopas SDCC-re portolasnal hogy a 'data' fenntartott szo,
irhattam at egy halom 'void send_data(char addr, char data)' jellegu
fuggvenyemet... Remelem a 'value' meg 'payload' nem lesz fenntartott szo
valamelyik C2010 szabvanyu compilerben. :-)
More information about the Elektro
mailing list