Megosztás:


intrinsic pragma

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ő