Naked 函式

Microsoft 专用

naked 存储类的属性是一个特定于 Microsoft 的扩展到 C 语言。 为函数。 naked 存储类的属性,编译器会生成代码,而无需 prolog 和 epilog 代码。 使用内联汇编代码中,可以使用此功能添加到编写拥有 prolog 和 epilog 代码排序。 裸功能尤为有用将编写虚拟设备驱动程序方面。

由于 naked 属性与函数定义只相关的并且不是类型修饰符,裸函数使用扩展属性语法,描述在 扩展的存储类的属性

下面的示例定义一 naked 属性的一个功能:

__declspec( naked ) int func( formal_parameters )
{
   /* Function body */
}

或者,或者:

#define Naked   __declspec( naked )

Naked int func( formal_parameters )
{
   /* Function body */
}

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

请参见

参考

C函数定义