Kezdőoldal » Számítástechnika » Programozás » C++ban ha egy exportált...

C++ban ha egy exportált (modules ts) modulban in-class definiálok egy tagfüggvényt, akkor az mindenképp inline lesz?

Figyelt kérdés

Elvileg az in-class definiált függvények automatikusan inline-nak vannak jelölve, de a szabvány szerint ez csak egy hint a compilernek, nem kötelező betartania, csak az ODR hiba elkerülése garantált. Logikus lenne, hogy modulok esetében csak akkor inline-olja valójban, ha ez így optimálisabb performancia szempontból, hogy ne változzon feleslegesen a modul publikus interfésze. De mi a valóság?


Teljesen header/preprocesszor nélküli programozás esetén hasznos lenne, ha sosem kéne kétszer leírni egy függvény szignatúráját, de az nem lenne ideális, ha az implementáció megváltoztatása miatt újra kéne fordítani mindent, aminek csak az interfésztől kéne függenie.



2017. okt. 24. 08:29
 1/1 anonim ***** válasza:
Én úgy tudom (de majd javítanak), hogy az "inline" fordításkor dől el. Ha egy lib-et vagy tárgykódot fordítasz, akkor abban már eldőlt. Az, hogy a header fájl hogyan működik linkeléskor, az a tárgykódban (vagy statiskus lib-ben) lévő szimbólumlistától függ. A linker az alapján jól fogja feloldani a hivatkozást. Az aktuális fordító beállítása arra már nincs hatással, az obj nem fog újrafordulni vagy újra optimalizálódni.
2017. okt. 24. 16:32
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!