Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A legtöbb függvény kódtárakban található, de egyes függvények a fordító beépített (azaz belső) részét képezik. Ezeket belső függvényeknek vagy belső funkcióknak nevezzük.
Megjegyzések
Ha egy függvény belső jellegű, a függvény kódja általában beágyazottan van beszúrva, elkerülve a függvényhívások többletterhelését, és lehetővé teszi az adott függvényre vonatkozó, rendkívül hatékony gépi utasítások kibocsátását. Az intrinsic gyakran gyorsabb, mint az egyenértékű beágyazott szerelvény, mivel az optimalizáló beépített ismeretekkel rendelkezik arról, hogy hány belső szerelvény viselkedik, így bizonyos optimalizálások elérhetők, amelyek nem érhetők el beágyazott szerelvény használatakor. Az optimalizáló emellett másképpen bővítheti a belső elemeket, másképpen igazíthatja a puffereket, vagy más módosításokat végezhet a hívás környezetétől és argumentumaitól függően.
Az intrinsics használata hatással van a kód hordozhatóságára, mivel előfordulhat, hogy a Microsoft C++ szolgáltatásban elérhető belső összetevők nem érhetők el, ha a kódot más fordítókkal fordítják le, és egyes célarchitektúrákhoz elérhető belső összetevők nem minden architektúrához érhetők el. Azonban a belső szerelvény általában hordozhatóbb, mint a beágyazott szerelvény. Az intrinsics olyan 64 bites architektúrákhoz szükséges, amelyekben a beágyazott szerelvény nem támogatott.
Egyes belső tényezők, például __assume és __ReadWriteBarrier, információkat nyújtanak a fordítónak, ami hatással van az optimalizáló viselkedésére.
Egyes belső elemek csak belső ként érhetők el, néhány pedig függvényekben és belső implementációkban is. A fordítót kétféleképpen utasíthatja a belső implementáció használatára, attól függően, hogy csak bizonyos függvényeket szeretne engedélyezni, vagy az összes belső elemet engedélyezni szeretné. Az első módszer az intrinsic-function-name-list) használata#pragma intrinsic(. A pragma egyetlen belső vagy több, vesszővel elválasztott belső elem megadására használható. A második az /Oi (Belső függvények létrehozása) fordítóbeállítás használata, amely elérhetővé teszi az adott platform összes belső elemét. Az /Oi területen használja #pragma function( az intrinsic-function-name-list függvényhívást) a belső helyett. Ha egy adott belső megjegyzés dokumentációja, amely szerint a rutin csak belsőként érhető el, akkor a rendszer a belső megvalósítást használja függetlenül attól, hogy /Oi vagy #pragma intrinsic meg van-e adva. A /Oi#pragma intrinsic minden esetben engedélyezi vagy engedélyezi, de nem kényszeríti az optimalizálót a belső használatra. Az optimalizáló továbbra is meghívhatja a függvényt.
Néhány szabványos C/C++ kódtárfüggvény egyes architektúrák belső implementációiban érhető el. CRT-függvény meghívásakor a rendszer a belső implementációt használja, ha az /Oi meg van adva a parancssorban.
Elérhető egy intrin.h> fejlécfájl<, amely deklarálja a prototípusokat a közös belső függvényekhez. A gyártóspecifikus belső vezérlők az immintrin.h> és <az <ammintrin.h> fejlécfájlokban érhetők el. Emellett bizonyos Windows-fejlécek deklarálnak olyan függvényeket is, amelyek egy fordítóra vannak leképezve.
Az alábbi szakaszok felsorolják a különböző architektúrákban elérhető összes belső elemet. Az adott célprocesszor belső működésével kapcsolatos további információkért tekintse meg a gyártó referenciadokumentációját.
Lásd még
ARM-összeszerelő referenciája
Microsoft Macro Assembler-referencia
Kulcsszavak
C futásidejű kódtár referenciája