Udostępnij za pośrednictwem


naked (C++)

Specyficzne dla firmy Microsoft

Do funkcji zadeklarowanych za pomocą atrybutu naked, kompilator generuje kod, bez kodu prologu i epilogu.Ta funkcja służy do pisania własnych sekwencji kodu prologu/epilogu za pomocą wbudowanego asemblera.Funkcje Naked są szczególnie przydatne w pisaniu sterowników urządzeń wirtualnych. Należy zauważyć, że atrybut naked jest prawidłowy tylko dla x86 i ARM i nie jest dostępny na x64.

__declspec(naked) declarator

Uwagi

Ponieważ atrybut naked jest istotny tylko dla definicji funkcji i nie jest modyfikatorem typu, funkcję Naked muszą użyć składni atrybutów rozszerzonych i słowa kluczowego __declspec.

Kompilator nie może wygenerować wbudowanej funkcji dla funkcji oznaczonej atrybutem Naked, nawet jeśli funkcja jest również oznaczona słowem kluczowym __forceinline.

Kompilator generuje błąd, jeśli atrybut naked jest stosowany gdzieś indziej niż definicja metody bezparametrowej.

Przykłady

Ten kod zawiera definicję funkcji z atrybutem naked:

__declspec( naked ) int func( formal_parameters ) {}

Lub inaczej:

#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}

Atrybut naked ma wpływ na charakter generowania kodu kompilatora, dotyczący sekwencji funkcji prologu i epilogu.Nie wpływa ona na kod, który jest generowany dla wywoływania takich funkcji.Tak więc atrybut naked nie jest uważany za część typu funkcji i wskaźniki funkcji nie mogą mieć atrybutu naked.Ponadto atrybutu naked nie można zastosować do definicji danych.Na przykład ten przykładowy kod generuje błąd:

__declspec( naked ) int i;       // Error--naked attribute not
                                 // permitted on data declarations.

Atrybut naked ma zastosowanie tylko do definicji funkcji i nie może być określony w prototypie funkcji.Na przykład deklaracja ta generuje błąd kompilatora:

__declspec( naked ) int func();  // Error--naked attribute not 
                                 // permitted on function declarations

KONIEC informacji specyficznych dla firmy Microsoft

Zobacz też

Informacje

__declspec

Słowa kluczowe języka C++

Wywołania funkcji Naked