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
ЭЛЕМЕНТ, относящийся Майкрософт