Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Meghatározza, hogy a pragmaargumentumlistájában megadott függvények hívásai belsőek.
Szintaxis
#pragma intrinsic(function_1 [,function_2 ... ])
Megjegyzések
A intrinsicpragma közli a fordítóval, hogy egy függvény ismert viselkedéssel rendelkezik. A fordító meghívhatja a függvényt, és nem helyettesítheti a függvényhívást beágyazott utasításokra, ha az jobb teljesítményt eredményez.
A kódtár belső űrlapokkal rendelkező függvényei az alábbiakban láthatók. Amint megjelenik egy intrinsicpragma, az a megadott belső függvényt tartalmazó első függvénydefinícióban lép érvénybe. Az effektus továbbra is a forrásfájl végéig vagy egy functionpragma megjelenésáig tart, amely ugyanazt a belső függvényt adja meg. A intrinsicpragma csak a függvénydefiníción kívül, globális szinten használható.
Az alábbi függvények belső űrlapokkal rendelkeznek, és a belső űrlapok a /Oimegadásakor használatosak:
A belső függvényeket használó programok gyorsabbak, mert nem rendelkeznek a függvényhívások többletterhelésével. A létrehozott további kód miatt azonban nagyobbak is lehetnek.
x86-specifikus példa
A _disable és _enable belső vezérlők kernel módú utasításokat hoznak létre a megszakítások letiltásához vagy engedélyezéséhez, és hasznos lehet a kernel módú illesztőprogramokban.
Fordítsa le a következő kódot a parancssorból cl -c -FAs sample.c, és tekintse meg a sample.asm, hogy x86-utasításokká és STI-vé alakuljanak:
// pragma_directive_intrinsic.cpp
// processor: x86
#include <dos.h> // definitions for _disable, _enable
#pragma intrinsic(_disable)
#pragma intrinsic(_enable)
void f1(void) {
_disable();
// do some work here that should not be interrupted
_enable();
}
int main() {
}
Belső lebegőpontos függvények
Ezek a lebegőpontos függvények nem rendelkeznek valódi belső formákkal. Ehelyett olyan verziókkal rendelkeznek, amelyek közvetlenül a lebegőpontos chipnek adják át az argumentumokat ahelyett, hogy a verembe nyomják őket:
Ezek a lebegőpontos függvények valódi belső űrlapokkal rendelkeznek /Oi és /fp:fast megadásakor (vagy bármely olyan beállítással, amely tartalmazza a /Oi: /Ox, /O1és /O2):
A /fp:strict vagy /Za használatával felülbírálhatja a valódi belső lebegőpontos beállítások létrehozását. Ebben az esetben a függvények olyan kódtár-rutinokként jönnek létre, amelyek közvetlenül a lebegőpontos chipnek adják át az argumentumokat ahelyett, hogy a programverembe helyezik őket.
A forrásszöveg-blokkok belső részeinek engedélyezéséről és letiltásáról további információt #pragma function és egy példát talál.
Lásd még:
Pragma irányelvei, valamint a __pragma és _Pragma kulcsszavak
Fordító belső