Mi a különbség a két megvalósítási mód közt?
C-ben szeretnék egy konstans értéket, amivel majd számolok.
1.)
#define pi 3.1415
2.)
double const pi=3.1415;
Miben más a két megoldás?
define nem használ memóriát, a const igen
C-ben preferált a define, mert ezzel tudsz arrayt foglalni, switchben lehet használni + nem használ memóriát.
Ha a const elé írsz egy static-t akkor az constans csak az adott fájlból lesz elérhető, átláthatóbb lesz a program.
A te esetedben én define-t használnék
egyébként C-ben van pi, a math.h -ban
A #define az előfordítónak szól, tehát a kódban a pi szimbólumot mindenhol cseréli a 3.1415 karaktersorra. A fordító már csak azt látja, hogy egy csomó helyen megjelenik a 3.1415 literál. Ugyanaz, mintha minden érintett kifejezésbe bepötyögted volna ezt a számot. Természetesen ez is használ memóriát, ahogy a literálok általában. (lehet kivétel, de az gépfüggő, ill. proc utasításkészlet függő.)
A const-tal deklarált szimbólum már a fordítóhoz kerül, bekerül a tárgykód szimbólumlistájába, tehát megtalálja a linker, név szerint elérhető lehet pl. más fordítási egységből.
De ez nagyon architektúra és fordító függő, melyiket melyik szegmensbe pakolja, data, text, kód operandus, stb. helyekre.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!