Kezdőoldal » Számítástechnika » Programozás » C++ -ban inline tagfüggvény...

C++ -ban inline tagfüggvény header fájlban mit jelent pontosan?

Figyelt kérdés
ez csak egy elnevezésbeli különbség (ti. hogy a headerfájlban a deklarációnál definiálom is), vagy azt is jelenti, hogy a fv. törzs a kódban a hívás helyére behelyettesítődik?
2011. márc. 9. 18:45
 1/2 anonim ***** válasza:

A C++ nyelv is megengedi, hogy a header fájlok tartalmazzanak (eljárás)

forráskódot is. Ezeket régen inline eljárásoknak nevezték nem tévesztendő

össze az inline eljárásokkal, ahol a kód a fv. törzs a kódban a hívás helyére behelyettesítődik.

2011. márc. 9. 21:26
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

Nah. Az inline kulcsszó csak annyit tesz, hogy a fordító, pontosabban a linker nem fog nyivákolni, ha több összeszerkesztendő állományban is megtalálja a kódját a cuccnak. Ezen túl csak egy ajánlás a fordítónak, hogy hé, szerintem ezt érdemes volna inlineosítani (azaz a hívás helyére bemásolni a kódot). De ez nem kötelezi a fordítót semmire, sőt, ő akármelyik függvénnyel megteheti ezt, a szabvány engedi (a szabvány minden optimalizációt enged, ami a látszólagos működést nem változtatja meg).


Tehát az inline kulcsszóval ellátott tagfüggvényt azért kell kifejteni a headerben, mert különben honnan tudná a kódot bemásolni a fordító, és azért lehet, mert a linker máshogy kezeli, mint a sima függvényeket. Próbáld ki, hogy nem inline függvényt fejtesz ki a headerben, és azt a headert több cpp-ben használod, nem fogod tudni összelinkelni.

2011. márc. 9. 21:54
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!