JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.2:C 用户指南
search filter icon
search icon

文档信息

前言

1.  C 编译器介绍

2.  特定于 C 编译器实现的信息

3.  并行化 C 代码

4.  lint 源代码检验器

5.  基于类型的别名分析

6.  转换为 ISO C

7.  转换应用程序以适用于 64 位环境

8.  cscope:交互检查 C 程序

A.  按功能分组的编译器选项

A.1 按功能汇总的选项

A.1.1 优化和性能选项

A.1.2 编译时选项和链接时选项

A.1.3 数据对齐选项

A.1.4 数值和浮点选项

A.1.5 并行化选项

A.1.6 源代码选项

A.1.7 编译代码选项

A.1.8 编译模式选项

A.1.9 诊断选项

A.1.10 调试选项

A.1.11 链接选项和库选项

A.1.12 目标平台选项

A.1.13 x86 特定选项

A.1.14 许可证选项

A.1.15 废弃的选项

B.  C 编译器选项参考

C.  实现定义的 ISO/IEC C99 行为

D.  支持的 C99 功能

E.  实现定义的 ISO/IEC C90 行为

F.  ISO C 数据表示法

G.  性能调节

H.  K&R Solaris Studio C 与 Solaris Studio ISO C 之间的差异

索引

A.1 按功能汇总的选项

在本节中,编译器选项按功能分组以便提供快速参考。有关各个选项的详细说明,请参阅表 A-15附录 B。某些标志用于多个目的,因此出现多次。

这些选项适用于除了特别注明之外的所有平台;基于 SPARC 的系统所特有的功能标识为 (SPARC),基于 x86/x64 的系统所特有的功能标识为 (x86)。仅适用于 Solaris 平台的选项标记为 (Solaris)。适用于仅 Linux 平台的选项标记为 (Linux)。

A.1.1 优化和性能选项

表 A-1 优化和性能选项表

选项
操作
-fast
选择编译选项的最佳组合,以加快可执行代码的编译速度。
-fma
(SPARC) 启用自动生成浮点乘加指令。
-p
准备目标代码,以便收集数据进行文件配置
-xalias_level
使编译器可执行基于类型的别名分析和优化。
-xannotate
(Solaris) 指示编译器创建以后可由诸如 binopt(1) 之类的二进制修改工具进行转换。
-xbinopt
准备二进制文件,以便随后进行优化、转换和分析。
-xbuiltin
改进对调用标准库函数的代码的优化。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xF
允许链接程序对数据和函数重新排序。
-xhwcprof
(SPARC) 允许编译器支持基于硬件计数器的分析。
-xinline
尝试仅内联指定函数。
-xinstrument
编译程序并为其提供程序设备以便 Thread Analyzer 对其进行分析。
-xipo
通过调用过程间分析组件对整个程序执行优化。
-xipo_archive
使交叉文件优化可包含归档 (.a) 库。
-xjobs
设置编译器创建的进程数。
-xlibmil
内联一些库例程,以加快执行的速度。
-xlic_lib=sunperf
Sun 性能库中进行链接。
-xlinkopt
对可重定位对象文件执行链接时优化。
-xlibmopt
启用已优化数学例程的库。
-xmaxopt
命令会将 pragma opt 级别限制为指定级别。
-xnolibmil
内联数学库例程。
-xnolibmopt
禁用已优化数学例程的库。
-x0
优化对象代码。
-xnorunpath
禁止在可执行文件中包含共享库的运行时搜索路径。
-xpagesize
设置栈和堆的首选页面大小。
-xpagesize_stack
设置栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xpch
缩短其源文件共享同一组 include 文件的应用程序的编译时间。
-xpec
生成一个可与自动调优系统 (Automatic Tuning System, ATS) 一起使用的可移植的可执行代码 (Portable Executable Code, PEC) 二进制文件。有关更多信息,请访问 http://cooltools.sunsource.net。
-xpchstop
可与 -xpch 结合使用以指定活前缀的最后一个 include 文件。
-xpentium
(x86) 针对 Pentium 处理器进行优化。
-xprefetch
启用预取指令。
-xprefetch_level
控制 -xprefetch=auto 设置的自动插入预取指令的主动性。
-xprefetch_auto_type
控制生成间接预取指令的方式。
-xprofile
为配置文件收集数据或使用配置文件进行优化。
-xprofile_ircache
通过重用 -xprofile=collect 阶段保存的编译数据缩短 -xprofile=use 阶段的编译时间。
-xprofile_pathmap
支持单个配置文件目录中的多个程序或共享库。
-xrestrict
返回赋值指针的函数参数视为限定指针。
-xsafe
(SPARC) 允许编译器假定不会发生基于内存的陷阱。
-xspace
不对增加代码大小的循环执行优化和并行化。
-xunroll
建议优化器解开循环 n 次。

A.1.2 编译时选项和链接时选项

下表列出了在链接时和编译时都必须指定的选项。

表 A-2 编译时选项和链接时选项表

选项
操作
-fast
选择编译选项的最佳组合,以加快可执行代码的编译速度。
-m32|-m64
指定编译的二进制对象的内存模型。
-mt
扩展-D_REENTRANT -lthread 的宏选项。
-p
准备目标代码,以便收集数据使用 prof(1) 进行文件配置。
-xarch
指定指令集结构体系。
-xautopar
针对多处理器启用自动并行化。
-xhwcprof
(SPARC) 允许编译器支持基于硬件计数器的分析。
-xipo
通过调用过程间分析组件对整个程序执行优化。
-xlinkopt
对可重定位对象文件执行链接时优化。
-xmemalign
(SPARC) 指定最大假定内存对齐以及未对齐数据访问的行为。
-xopenmp
支持显式并行化 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。
-xpagesize
设置栈和堆的首选页面大小。
-xpagesize_stack
设置栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xpg
准备目标代码,以便收集数据使用 gprof(1) 进行文件配置。
-xprofile
为配置文件收集数据或使用配置文件进行优化。
-xvector=lib
启用自动生成对向量库函数的调用。

A.1.3 数据对齐选项

表 A-3 数据对齐选项表

选项
操作
-xchar_byte_order
通过按指定字节顺序排列多字符字符常量的字符来生成整型常量。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xmemalign
(SPARC) 指定最大假定内存对齐以及未对齐数据访问的行为。
-xopenmp
支持显式并行化 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。

A.1.4 数值和浮点选项

表 A-4 数值和浮点选项表

选项
操作
-flteval
(x86) 控制浮点计算。
-fma
(SPARC) 启用自动生成浮点乘加指令。
-fnonstd
导致对浮点运算硬件的非标准初始化。
-fns
启用非标准浮点模式。
-fprecision
(x86) 初始化浮点控制字中的舍入精度模式位。
-fround
设置程序初始化期间运行时建立的 IEEE 754 舍入模式。
-fsimple
允许优化器进行有关浮点运算的简化假定。
-fsingle
导致编译器按单精度而非双精度计算 float 表达式。
-fstore
(x86) 导致编译器将浮点表达式或函数的值转换为赋值左侧的类型。
-ftrap
设置 IEEE 754 捕获模式在启动时生效。
-nofstore
(x86)将浮点表达式或函数的值转换为赋值左侧的类型。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xlibmieee
强制 IEEE 754 样式在异常情况下返回数学例程值。
-xsfpconst
无后缀浮点常量表示为单精度。
-xvector
启用自动生成对向量库函数的调用。

A.1.5 并行化选项

表 A-5 并行化选项表

选项
操作
-mt
扩展-D_REENTRANT -lthread 的宏选项。
-xautopar
针对多处理器启用自动并行化。
-xcheck
添加针对栈溢出的运行时检查并初始化局部变量。
-xdepend
分析循环以了解迭代间数据依赖性并执行循环重构。
-xloopinfo
显示哪些循环已并行化以及哪些循环未并行化。
-xopenmp
支持显式并行化 OpenMP 接口,包括一组源代码指令、运行时库例程和环境变量。
-xreduction
自动并行化期间启用约简识别。
-xrestrict
将返回赋值指针的函数参数视为限定指针。
-xvpara
已指定 #pragma MP 指令但可能未针对并行化进行正确指定的循环发出警告。
-xthreadvar
控制线程局部变量的实现。
-Zll
lock_lint 创建程序数据库,但不生成可执行代码。

A.1.6 源代码选项

表 A-6 源代码选项表

选项
操作
-A
name 作为谓词与指定的 token 相关联,这与使用 #assert 预处理指令类似。
-C
阻止预处理程序删除注释(预处理指令行中的注释除外)。
-D
name 与指定的标记相关联,这与使用 #define 预处理指令类似。
-E
仅通过预处理程序运行源文件,并将输出发送到 stdout
-fd
报告 K&R 样式的函数的定义和声明。
-H
将当前编译期间涉及的每个文件的路径名输出到标准错误中,每行一个路径名。
-I
将目录添加到用于搜索具有相对文件名的 #include 文件的列表中。
-include
使编译器将参数 filename 视为作为 #include 预处理程序指令出现在主源文件的第一行。
-P
仅通过 C 预处理程序运行源文件。
-U
删除预处理程序符号 name 的所有初始定义。
-X
-X 选项指定符合 ISO C 标准的各种级别。
-xCC
接受 C++ 样式的注释。
-xc99
控制编译器识别支持的 C99 功能。
-xchar
帮助从字符被定义为无符号类型的系统中迁移。
-xcsi
允许 C 编译器接受在不符合 ISO C 源字符代码要求的语言环境中编写的源代码。
-xM
对指定 C 程序仅运行预处理程序,同时请求生成 makefile 依赖性并将结果发送到标准输出。
-xM1
收集类似 -xM 的依赖性,但 /usr/include 文件除外。
-xMD
-xM 一样生成 makefile 依赖性,但包括编译。
-xMF
指定可存储 makefile 依赖性信息的文件名。
-xMMD
生成 makefile 依赖性,但不包括系统头文件。
-xP
输出在此模块中定义的所有 K&R C 函数的原型。
-xpg
准备目标代码,为使用 gprof(1) 进行文件配置而收集数据。
-xtrigraphs
确定三字符序列的识别。
-xustr
启用对十六位字符构成的串文字的识别。

A.1.7 编译代码选项

表 A-7 编译代码选项表

选项
操作
-c
指示编译器禁止与 ld(1) 链接并在当前工作目录中为每个源文件生成一个 .o 文件。
-o
指定输出文件。
-S
指示编译器生成汇编源文件但不汇编程序。

A.1.8 编译模式选项

表 A-8 编译模式选项表

选项
操作
-#
启用详细模式,显示命令选项展开的方式以及调用的组件。
-###
显示将要调用的每个组件,但是并不真正执行。还显示命令选项扩展的过程。
-features
启用或禁用各项 C 语言功能。
-keeptmp
保留编译期间创建的临时文件,而非将它们自动删除。
-V
指示 cc 在编译器执行时输出每个组件的名称和版本 ID。
-W
C 编译系统组件传递参数。
-X
-X 选项指定符合 ISO C 标准的各种级别。
-xc99
控制编译器识别支持的 C99 功能。
-xchar
保留字符的符号。
-xhelp
显示联机帮助信息。
-xjobs
设置编译器创建的进程数。
-xpch
缩短其源文件共享同一组 include 文件的应用程序的编译时间。
-xpchstop
可与 -xpch 结合使用以指定活前缀的最后一个 include 文件。
-xtemp
cc 使用的临时文件的目录设置为 dir
-xtime
报告每个编译组件所用的时间和资源。
-Y
指定一个新目录查找 C 编译系统组件。
-YA
更改搜索组件的缺省目录。
-YI
更改搜索 include 文件的缺省目录。
-YP
更改查找库文件的缺省目录。
-YS
更改启动对象文件的缺省目录。

A.1.9 诊断选项

表 A-9 诊断选项表

选项
操作
-errfmt
字符串 "error: " 作为错误消息的前缀,以便区分于警告消息。
-errhdr
将来自头文件的警告限定到指定的组。
-erroff
禁止编译器警告消息。
-errshort
控制编译器发现类型不匹配时生成的错误消息中的详细信息量。
-errtags
显示每条警告消息的消息标记。
-errwarn
如果发出指示警告消息, cc 将以故障状态退出。
-v
指示编译器执行更严格的语义检查并启用类似 lint 的其他检查。
-w
禁止编译器警告消息。
-xe
对源文件仅执行语法和语义检查,但不生成任何目标代码或可执行代码。
-xtransition
发出关于 K&R C 与 Solaris Studio C 之间存在差异的警告。
-xvpara
已指定 #pragma MP 指令但可能未针对并行化进行正确指定的循环发出警告。

A.1.10 调试选项

表 A-10 调试选项表

选项
操作
-xcheck
添加针对栈溢出的运行时检查并初始化局部变量。
-g
调试器生成附加符号表信息。
-s
删除输出对象文件中的所有符号调试信息。
-xdebugformat
生成 dwarf 格式而非 stabs 格式的调试信息。
-xpagesize
设置栈和堆的首选页面大小。
-xpagesize_stack
设置栈的首选页面大小。
-xpagesize_heap
设置堆的首选页面大小。
-xs
禁用 dbx 的对象文件自动读取。
-xvis
(SPARC) 启用编译器对 VIS[tm] 指令集中定义的汇编语言模板的识别。

A.1.11 链接选项和库选项

表 A-11 链接选项和库选项表

选项
操作
-B
指定用于链接的库绑定是 static 还是 dynamic
-d
指定链接编辑器中的链接类型是动态还是静态。
-G
选项传递给链接编辑器,以生成共享对象而非动态链接的可执行内容。
-h
共享动态库指定名称,从而获得库的不同版本。
-i
选项传递给链接程序,以忽略所有 LD_LIBRARY_PATH 设置。
-L
链接程序搜索库的列表中添加目录。
-l
目标库 libname.solibname.a 链接。
-mc
删除对象文件的 .comment 部分中重复的字符串。
-mr
删除 .comment 部分中所有的字符串。也可以向目标文件的该部分中插入一个字符串
-Q
向输出文件发出或不发出标识信息。
-R
将用于指定库搜索目录的、以冒号分隔的目录列表传递给运行时链接程序。
-xMerge
数据段合并到文本段中。
-xcode
指定代码地址空间。
-xldscope
控制变量的缺省作用域和函数定义,以创建更快、更安全的共享库。
-xnolib
缺省情况下,不链接任何库。
-xnolibmil
内联数学库例程。
-xstrconst
在以后的发行版中可能会废弃此选项。改用 -features=[no%]conststrings

串文字插入文本段(而非缺省数据段)的只读数据部分。

A.1.12 目标平台选项

表 A-12 目标平台选项表

选项
操作
-m32|-m64
指定编译的二进制对象的内存模型。
-xarch
指定指令集结构体系。
-xcache
定义供优化器使用的高速缓存属性。
-xchip
指定供优化器使用的目标处理器。
-xregs
生成的代码指定寄存器的用法。
-xtarget
为指令集和优化指定目标系统。

A.1.13 x86 特定选项

表 A-13 x86 特定选项表

选项
操作
-flteval
控制浮点计算。
-fprecision
初始化浮点控制字中的舍入精度模式位
-fstore
导致编译器将浮点表达式或函数的值转换为赋值左侧的类型
-nofstore
将浮点表达式或函数的值转换为赋值左侧的类型
-xmodel
针对 Solaris x86 平台修改 64 位对象的形式
-xpentium
针对 Pentium 处理器进行优化。

A.1.14 许可证选项

表 A-14 许可证选项表

选项
操作
-xlicinfo
返回有关许可证系统的信息。

A.1.15 废弃的选项

下表列出了已过时的选项。请注意,编译器仍可接受这些选项,但在以后的版本中可能不接受这些选项。所以,请尽快开始使用建议的替代选项。

表 A-15 废弃选项表

选项
操作
-dalign
改用 -xmemalign=8s
-KPIC (SPARC)
改用 -xcode=pic32
-Kpic (SPARC)
改用 -xcode=pic13
-misalign
改用 -xmemalign=1i
-misalign2
改用 -xmemalign=2i
-x386
改用 -xchip=generic
-x486
改用 -xchip=generic
-xa
改用 -xprofile=tcov
-xarch=v7,v8,v8a
已过时。
-xcg
改用 -O,以利用 -xarch-xchip-xcache 的缺省值。
-xcrossfile
改用 -xipo
-xnativeconnect
已废弃,没有替代选项。
-xprefetch=yes
改用 -xprefetch=auto,explicit
-xprefetch=no
改用 -xprefetch=no%auto,no%explicit
-xsb
已废弃,没有替代选项。
-xsbfast
已废弃,没有替代选项。
-xtarget=386
改用 -xtarget=generic
-xtarget=486
改用 -xtarget=generic
-xvector=yes
改用 -xvector=lib
-xvector=no
改用 -xvector=none