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