Sun Studio 12 Update 1:C 用户指南

2.12 扩展

C 编译器针对 C 语言实现了许多扩展。

2.12.1 _Restrict 关键字

C 编译器支持 _Restrict 关键字,该关键字与 C99 标准中的 restrict 关键字等效。_Restrict 关键字可与 -xc99=none-xc99=all 一起使用,而 restrict 关键字只能与 -xc99=all 一起使用。

有关支持的 C99 特性的更多信息,请参见表 C–6

2.12.2 _ _asm 关键字

__asm 关键字(注意开头的两个下划线)asm 关键字的同义字。如果您使用 asm 而不是 __asm,并且在 -Xc 模式下编译,则编译器会发出警告。如果您在 – Xc 模式下使用 _ _asm,则编译器不会发出警告。_ _asm 语句采用以下形式:


__asm("string");

其中 string 是有效的汇编语言语句。

该语句将给定的汇编程序文本直接发送到汇编文件。在文件作用域(而不是函数作用域)声明的基本 asm 语句称为全局 asm 语句。其他编译器将其称为顶级 asm 语句。

全局 asm 语句是按指定的顺序发出的。也就是说,它们保留相对于彼此的顺序,并保持相对于前后函数的位置。

在较高优化级别中,编译器可能会删除认为不被引用的函数。由于编译器不知道从全局 asm 中引用了哪些函数,因此可能会无意中删除这些函数。

请注意,那些提供模板及操作数规范的扩展 asm 语句不允许作为全局语句。__asm__asm__asm 关键字的同义字,可以互换使用。

2.12.3 __inline__inline__

__inline__inline__inline 关键字的同义字(C 标准,第 6.4.1 节)

2.12.4 __builtin_constant_p()

__builtin_constant_p 是编译器内置函数。它接受一个数值参数,如果已知参数是一个编译时常量,则返回 1。返回值 0 意味着编译器无法确定参数是否是编译时常量。此内置函数的典型用法是在宏中用于手动编译时优化。

2.12.5 __FUNCTION____PRETTY_FUNCTION__

__FUNCTION____PRETTY_FUNCTION__ 是预定义标识符,这些标识符包含词法上封闭的函数的名称。它们在功能上等效于 c99 预定义标识符 __func__。在 Solaris 平台上,__FUNCTION____PRETTY_FUNCTION__-Xs-Xc 模式下不可用。