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

Viz také

Referenční dokumentace

__declspec

Klíčová slova jazyka C++

Volání holé funkce