Поделиться через


naked (C++)

Только для систем Microsoft

Для функций, объявленных с naked атрибут компилятор создает код без кода пролога и эпилога.Эту функцию можно использовать, чтобы написать собственные последовательности код пролога и эпилога, используя встроенный Код ассемблера.Нагие функции особенно полезны в драйверах виртуального устройства записи.Обратите внимание, что naked атрибут допустим только на базе x86 и недоступен on x64 OR Itanium.

__declspec(naked) declarator

Заметки

Поскольку naked атрибут действителен только к определению функции и нет модификатора типов, нагие функции должны использовать расширенный синтаксис атрибутов и __declspec ключевое слово.

Компилятору не удалось создать встроенную функцию для функции с нагим помеченной атрибутом, даже если функция также отмечена __forceinline ключевое слово.

Компилятор выдает ошибку, если naked атрибут применяется к что-либо, отличное от определения метода non-участника.

Примеры

Этот код определяет функцию с naked атрибут:

__declspec( naked ) int func( formal_parameters ) {}

Или, отличаются:

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

naked атрибут влияет только на природу создания Кода компилятора для последовательностей пролога и эпилога функции.Он не влияет на Код, созданный для вызова этих функций.таким образом, naked атрибут не считается частью типа функции и указатели функции не могут иметь naked атрибут.Кроме того, naked атрибут нельзя применять к определению данных.Например, следующий пример кода генерирует ошибку:

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

naked атрибут действителен только к определению функции и не может быть определен в прототипе функции.Например, это объявление вызовет ошибку компиляции:

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

ЭЛЕМЕНТ, относящийся Майкрософт

См. также

Ссылки

__declspec

Ключевые слова C++

Нагие вызовы функций