跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:C 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
2.11.3 does_not_read_global_data
2.11.5 does_not_write_global_data
2.11.26 warn_missing_parameter_info
2.18 对 Intel MMX 和扩展的 x86 平台内部函数的编译器支持
C 编译器针对 C 语言实现了许多扩展。
C 编译器支持 _Restrict 关键字,该关键字与 C99 标准中的 restrict 关键字等效。_Restrict 关键字可与 -xc99=none 和 -xc99=all 一起使用,而 restrict 关键字只能与 -xc99=all 一起使用。
有关支持的 C99 特性的更多信息,请参见表 C-6。
__asm 关键字(注意开头的两个下划线)是 asm 关键字的同义字。如果您使用 asm 而不是 __asm,并且在 -Xc 模式下编译,则编译器会发出警告。如果您在 – Xc 模式下使用 _ _asm,则编译器不会发出警告。_ _asm 语句采用以下形式:
__asm("string");
其中 string 是有效的汇编语言语句。
该语句将给定的汇编程序文本直接发送到汇编文件。在文件作用域(而不是函数作用域)声明的基本 asm 语句称为全局 asm 语句。其他编译器将其称为顶级 asm 语句。
全局 asm 语句以其指定顺序发出,保留相对于彼此的顺序,并保持相对于前后函数的位置。
在较高优化级别中,编译器可能会删除已确定不被引用的函数。由于编译器得出从全局汇编语言语句中引用了哪些函数的结果,因此可能会无意中删除这些函数。
请注意,那些提供模板及操作数规范的扩展 asm 语句不允许作为全局语句。__asm 和 __asm__ 是 asm 关键字的同义字,可以互换使用。
指定特定于体系结构的指令时,可能需要指定正确的 -xarch 值以避免发生编译错误。
__inline 和 __inline__ 是 inline 关键字的同义字(C 标准,第 6.4.1 节)
__builtin_constant_p 是编译器内置函数。它接受一个数值参数,如果参数是一个编译时常量,则返回 1。返回值 0 意味着编译器无法确定参数是否是编译时常量。此内置函数的典型用法是在宏中用于手动编译时优化。
__FUNCTION__ 和 __PRETTY_FUNCTION__ 是预定义标识符,这些标识符包含词法上封闭的函数的名称。它们在功能上等效于 c99 预定义标识符 __func__。在 Oracle Solaris 平台上,__FUNCTION__ 和 __PRETTY_FUNCTION__ 在 -Xs 和 -Xc 模式下不可用。