naked (C++)
Microsoft 专用
为函数。 naked 属性,编译器会生成代码,而无需 prolog 和 epilog 代码。 使用内联汇编代码中,可以使用此功能添加到编写拥有 prolog 和 epilog 代码排序。 裸功能尤为有用将编写虚拟设备驱动程序方面。 请注意 naked 属性仅适用于 x86,并不在 x64 或 Itanium。
__declspec(naked) declarator
备注
由于 naked 属性与函数定义只相关的并且不是类型修饰符,裸函数必须使用扩展属性语法和 __declspec 关键字。
编译器无法生成功能的内联函数标记为裸属性,因此,即使该函数还标有 __forceinline 关键字。
除了非成员方法的定义之外,,因此,如果 naked 特性应用于任何编译器将发出错误。
示例
此代码定义了 naked 属性的一个功能:
__declspec( naked ) int func( formal_parameters ) {}
或者,或者:
#define Naked __declspec( naked )
Naked int func( formal_parameters ) {}
naked 属性影响编译器生成的代码的仅谓词函数 prolog 和 epilog 序列的。 它不会影响对这些功能生成的代码。 因此, 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
特定于 Microsoft 的结尾