Az extern kulcsszó arra van, hogy egy változót definiálás nélkül tudjak deklarálni? C++
Látom, kezded érteni :)
Igen, arra való. Kivéve, ha const, mert akkor azt jelenti, hogy külső linkelésű legyen a név, azaz látható legyen másik fordítási egységben is.
"Kivéve, ha const, mert akkor azt jelenti, hogy külső linkelésű legyen a név, azaz látható legyen másik fordítási egységben is."
Ezt nem értem.
extern int x ; deklarálom.
És hogyan definiáljam utána ?
Másik fordítási egységben, simán int x;. Az extern int x; azt mondja a fordítónak, hogy van itt egy int típusú x név, amit valahol máshol definiálok. Tehát nem lesz egy inted abban a fordítási egységben, ami lesz viszont az egy linker hivatkozás kívülre, és linkelésnél fogja keresni a többi állományban.
"Ezt nem értem."
A const változók alapértelmezésben statikusak, azaz minden fordítási egységben lehet ugyanaz a név, nem fognak ütközni. Ez azért jó, mert ha fejállományokba rakod bele a constot, amit mindenhova behúzol, nem lesz ütközés. Az extern itt azt csinálja, hogy úgy fog viselkedni, mint egy nem-const változó, azaz csak egy lehet belőle az összes fordítási egység között.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!