naked (C++)
Specifické pro Microsoft
Pro funkce deklarována s naked atribut, kompilátor generuje kód bez kódu prologu a epilogu.Tuto funkci můžete napsat vlastní sekvence kódu prologu/epilogu pomocí vloženého kódu assembleru.Nahá funkce jsou zvláště užitečné při vytváření virtuální ovladače zařízení. Všimněte si, že naked atribut je platný pouze v x 86 i ARM a není k dispozici v x64.
__declspec(naked) declarator
Poznámky
Protože naked atribut je pouze definice funkce a není typ modifikátoru, nahá funkce musíte použít syntaxi rozšířených atributů a __declspec klíčové slovo.
Kompilátor nemůže generovat vložená funkce funkce s atributem nahá i v případě, že funkce je také označeno __forceinline klíčové slovo.
Kompilátor vyvolá chybu, pokud naked atribut se aplikuje na cokoli jiného než definice třetí metoda.
Příklady
Tento kód definuje funkci s naked atribut:
__declspec( naked ) int func( formal_parameters ) {}
Nebo můžete také:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked Atribut ovlivňuje povahu kompilátoru generování kódu pro sekvence prologu a epilogu funkce.Kód, který je generován pro volání těchto funkcí nemá vliv.Tedy naked atribut není považován za součást typu funkce a nemůže mít ukazatelů funkcí naked atribut.Kromě toho naked nelze použít atribut pro definici dat.Například tato ukázka kódu vygeneruje chybu:
__declspec( naked ) int i; // Error--naked attribute not
// permitted on data declarations.
naked Atribut je relevantní pouze pro definice funkce a nemůže být specifikován v prototypu funkce.Toto prohlášení například vygeneruje chybu kompilátoru:
__declspec( naked ) int func(); // Error--naked attribute not
// permitted on function declarations
Specificka produktu Microsoft END