Kezdőoldal » Számítástechnika » Programozás » Mi a különbség a két megvalósí...

Mi a különbség a két megvalósítási mód közt?

Figyelt kérdés

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?



2018. febr. 2. 00:00
 1/3 anonim ***** válasza:

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

2018. febr. 2. 00:42
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
Köszi, így érthető! Igazából mikrovezérlőt programozok és nem akartam Vref-et írni, a pí általánosabb.
2018. febr. 2. 01:19
 3/3 anonim ***** válasza:
100%

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.

2018. febr. 2. 10:27
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!