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 的结尾

请参见

参考

__declspec

C++关键字

裸函数调用