Sun Studio 12 Update 1:C++ 用户指南

前言
第 1 部分 C++ 编译器
第 1 章 C++ 编译器
1.1 Sun Studio 12 Update 1 C++ 5.10 编译器的新特性和新功能
1.2 x86 特殊注意事项
1.3 针对 64 位平台进行编译
1.4 二进制兼容验证
1.5 标准一致性
1.6 C++ 自述文件
1.7 手册页
1.8 本地语言支持
第 2 章 使用 C++ 编译器
2.1 入门
2.2 调用编译器
2.2.1 命令语法
2.2.2 文件名称约定
2.2.3 使用多个源文件
2.3 使用不同编译器版本进行编译
2.4 编译和链接
2.4.1 编译和链接序列
2.4.2 分别编译和链接
2.4.3 一致编译和链接
2.4.4 针对 64 位内存模型进行编译
2.4.5 诊断编译器
2.4.6 了解编译器的组织
2.5 预处理指令和名称
2.5.1 Pragma
2.5.2 具有可变数目的参数的宏
2.5.3 预定义的名称
2.5.4 #error
2.6 内存要求
2.6.1 交换空间大小
2.6.2 增加交换空间
2.6.3 虚拟内存的控制
2.6.4 内存要求
2.7 将 strip 命令用于 C++ 目标
2.8 简化命令
2.8.1 在 C Shell 中使用别名
2.8.2 使用 CCFLAGS 指定编译选项
2.8.3 使用 make
2.8.3.1 在 make 中使用 CCFLAGS
第 3 章 使用 C++ 编译器选项
3.1 语法
3.2 通用指南
3.3 按功能汇总的选项
3.3.1 代码生成选项
3.3.2 编译时性能选项
3.3.3 编译时选项和链接时选项
3.3.4 调试选项
3.3.5 浮点选项
3.3.6 语言选项
3.3.7 库选项
3.3.8 废弃的选项
3.3.9 输出选项
3.3.10 运行时性能选项
3.3.11 预处理程序选项
3.3.12 文件配置选项
3.3.13 参考选项
3.3.14 源文件选项
3.3.15 模板选项
3.3.16 线程选项
第 2 部分 编写 C++ 程序
第 4 章 语言扩展
4.1 链接程序作用域
4.1.1 与 Microsoft Windows 兼容
4.2 线程局部存储
4.3 用限制较少的虚函数覆盖
4.4 对 enum 类型和变量进行前向声明
4.5 使用不完整 enum 类型
4.6 将 enum 名称作为作用域限定符
4.7 使用匿名 struct 声明
4.8 传递匿名类实例的地址
4.9 将静态名称空间作用域函数声明为类友元
4.10 将预定义 func 符号用于函数名
4.11 packed 属性
第 5 章 程序组织
5.1 头文件
5.1.1 可适应语言的头文件
5.1.2 幂等头文件
5.2 模板定义
5.2.1 包括的模板定义
5.2.2 独立的模板定义
第 6 章 创建和使用模板
6.1 函数模板
6.1.1 函数模板声明
6.1.2 函数模板定义
6.1.3 函数模板用法
6.2 类模板
6.2.1 类模板声明
6.2.2 类模板定义
6.2.3 类模板成员定义
6.2.3.1 函数成员定义
6.2.3.2 静态数据成员定义
6.2.4 类模板的用法
6.3 模板实例化
6.3.1 隐式模板实例化
6.3.2 显式模板实例化
6.3.2.1 模板函数的显式实例化
6.3.2.2 模板类的显式实例化
6.3.2.3 模板类函数成员的显式实例化
6.3.2.4 模板类静态数据成员的显式实例
6.4 模板组合
6.5 缺省模板参数
6.6 模板专门化
6.6.1 模板专门化声明
6.6.2 模板专门化定义
6.6.3 模板专门化使用和实例化
6.6.4 部分专门化
6.7 模板问题部分
6.7.1 非本地名称解析和实例化
6.7.2 作为模板参数的本地类型
6.7.3 模板函数的友元声明
6.7.4 在模板定义内使用限定名称
6.7.5 嵌套模板名称
6.7.6 引用静态变量和静态函数
6.7.7 在同一目录中使用模板生成多个程序
第 7 章 编译模板
7.1 冗余编译
7.2 系统信息库管理
7.2.1 生成的实例
7.2.2 整个类实例化
7.2.3 编译时实例化
7.2.4 模板实例的放置和链接
7.3 外部实例
7.3.1 可能的缓存冲突
7.3.2 静态实例
7.3.3 全局实例
7.3.4 显式实例
7.3.5 半显式实例
7.4 模板系统信息库
7.4.1 系统信息库结构
7.4.2 写入模板系统信息库
7.4.3 从多模板系统信息库读取
7.4.4 共享模板系统信息库
7.4.5 通过 -instances=extern 实现模板实例自动一致
7.5 模板定义搜索
7.5.1 源文件位置约定
7.5.2 定义搜索路径
7.5.3 诊断有问题的搜索
第 8 章 异常处理
8.1 同步和异步异常
8.2 指定运行时错误
8.3 禁用异常
8.4 使用运行时函数和预定义的异常
8.5 将异常与信号和 Setjmp/Longjmp 混合使用
8.6 生成具有异常的共享库
第 9 章 强制类型转换操作
9.1 const_cast
9.2 reinterpret_cast
9.3 static_cast
9.4 动态强制类型转换
9.4.1 将分层结构向上强制类型转换
9.4.2 强制类型转换到 void*
9.4.3 将分层结构向下或交叉强制类型转换
第 10 章 改善程序性能
10.1 避免临时对象
10.2 使用内联函数
10.3 使用缺省运算符
10.4 使用值类
10.4.1 选择直接传递类
10.4.2 在不同的处理器上直接传递类
10.5 缓存成员变量
第 11 章 生成多线程程序
11.1 生成多线程程序
11.1.1 表明多线程编译
11.1.2 与线程和信号一起使用 C++ 支持库
11.2 在多线程程序中使用异常
11.2.1 线程取消
11.3 在线程之间共享 C++ 标准库对象
11.4 在多线程环境中使用传统 iostream
11.4.1 MT 安全的 iostream 库的组织
11.4.1.1 公共转换例程
11.4.1.2 使用 MT 安全的 libC 库进行编译和链接
11.4.1.3 MT 安全的 iostream 限制
检查错误状态
获取通过上次未格式化输入操作提取的字符
用户定义的 I/O 操作
11.4.1.4 减少多线程安全类的性能开销
11.4.2 iostream 库接口更改
11.4.2.1 新增类
11.4.2.2 新增类的分层结构
11.4.2.3 新增函数
11.4.3 全局和静态数据
11.4.4 序列执行
11.4.5 对象锁定
11.4.5.1 stream_locker 类
11.4.6 多线程安全类
11.4.7 对象析构
11.4.8 示例应用程序
第 3 部分 库
第 12 章 使用库
12.1 C 库
12.2 随 C++ 编译器提供的库
12.2.1 C++ 库描述
12.2.2 访问 C++ 库的手册页
12.2.3 缺省 C++ 库
12.3 相关的库选项
12.4 使用类库
12.4.1 iostream 库
12.4.2 complex 库
12.4.3 链接 C++ 库
12.5 静态链接标准库
12.6 使用共享库
12.7 替换 C++ 标准库
12.7.1 可以替换的内容
12.7.2 不可替换的内容
12.7.3 安装替换库
12.7.4 使用替换库
12.7.5 标准头文件实现
12.7.5.1 替换标准 C++ 头文件
12.7.5.2 替换标准 C 头文件
忠告:
第 13 章 使用 C++ 标准库
13.1 C++ 标准库头文件
13.2 C++ 标准库手册页
13.3 STLport
13.3.1 重新分发和支持的 STLport 库
第 14 章 使用传统 iostream 库
14.1 预定义的 iostream
14.2 iostream 交互的基本结构
14.3 使用传统 iostream 库
14.3.1 使用 iostream 进行输出
14.3.1.1 定义自己的插入运算符
14.3.1.2 处理输出错误
14.3.1.3 刷新
14.3.1.4 二进制输出
14.3.2 使用 iostream 进行输入
14.3.3 定义自己的提取运算符
14.3.4 使用 char* 提取器
14.3.5 读取任何单一字符
14.3.6 二进制输入
14.3.7 查看输入
14.3.8 提取空白
14.3.9 处理输入错误
14.3.10 结合使用 iostream 与 stdio
14.4 创建 iostream
14.4.1 使用类 fstream 处理文件
14.4.1.1 打开模式
14.4.1.2 在未指定文件的情况下声明 fstream
14.4.1.3 打开和关闭文件
14.4.1.4 使用文件描述符打开文件
14.4.1.5 在文件内重新定位
14.5 iostream 赋值
14.6 格式控制
14.7 操纵符
14.7.1 使用无格式操纵符
14.7.2 参数化操纵符
14.8 用于数组的 strstream: iostream
14.9 用于 stdio 文件的 stdiobuf: iostream
14.10 streambuf
14.10.1 streambuf 工作方式
14.10.1.1 指针位置
14.10.2 使用 streambuf
14.11 iostream 手册页
14.12 iostream 术语
第 15 章 使用复数运算库
15.1 复数库
15.1.1 使用复数库
15.2 complex 类型
15.2.1 complex 类的构造函数
15.2.2 算术运算符
15.3 数学函数
15.4 错误处理
15.5 输入和输出
15.6 混合模式运算
15.7 效率
15.8 复数手册页
第 16 章 生成库
16.1 认识库
16.2 生成静态(归档)库
16.3 生成动态(共享)库
16.4 生成包含异常的共享库
16.5 生成专用的库
16.6 生成公用的库
16.7 生成具有 C API 的库
16.8 使用 dlopen 从 C 程序访问 C++ 库
第 4 部分 附录
附录 A C++ 编译器选项
A.1 选项信息的结构
A.2 选项参考
A.2.1 –386
A.2.2 –486
A.2.3 –a
A.2.4 –Bbinding
A.2.4.1 值
缺省值
交互
示例
警告
另请参见
A.2.5 –c
A.2.5.1 示例
警告
另请参见
A.2.6 –cg{89|92}
A.2.7 –compat[={4|5}]
A.2.7.1 值
缺省值
交互
警告
另请参见
A.2.8 +d
A.2.8.1 示例
交互
另请参见
A.2.9 -Dname[ =def]
A.2.9.1 值
交互
另请参见
A.2.10 –d{y|n}
A.2.10.1 值
缺省值
交互
警告
另请参见
A.2.11 –dalign
A.2.11.1 警告
A.2.12 –dryrun
A.2.13 –E
A.2.13.1 示例
警告
另请参见
A.2.14 +e{0|1}
A.2.14.1 值
交互
另请参见
A.2.15 -erroff[= t]
A.2.15.1 值
缺省值
示例
警告
另请参见
A.2.16 -errtags[= a]
A.2.16.1 值和缺省
警告
另请参见
A.2.17 -errwarn[= t]
A.2.17.1 值
缺省值
警告
另请参见
A.2.18 –fast
A.2.18.1 扩展
交互
示例
警告
另请参见
A.2.19 –features=a[,a…]
A.2.19.1 值
缺省值
交互
警告
另请参见
A.2.20 -filt[=filter[,filter…]]
A.2.20.1 值
缺省值
示例
交互
A.2.21 –flags
A.2.22 -fma[={none|fused}]
A.2.23 –fnonstd
A.2.23.1 缺省值
扩展
另请参见
A.2.24 –fns[={yes|no}]
A.2.24.1 值
缺省值
示例
警告
另请参见
A.2.25 –fprecision=p
A.2.25.1 值
缺省值
警告
A.2.26 –fround=r
A.2.26.1 值
缺省值
警告
A.2.27 –fsimple[=n]
A.2.27.1 值
缺省值
交互
警告
另请参见
A.2.28 –fstore
A.2.28.1 警告
另请参见
A.2.29 –ftrap=t[,t…]
A.2.29.1 值
缺省值
示例
警告
另请参见
A.2.30 –G
A.2.30.1 交互
警告
另请参见
A.2.31 –g
A.2.31.1 交互
警告
另请参见
A.2.32 –g0
A.2.32.1 另请参见
A.2.33 –H
A.2.34 –h[ ]name
A.2.34.1 示例
A.2.35 –help
A.2.36 -Ipathname
A.2.36.1 交互
警告
另请参见
A.2.37 -I-
A.2.37.1 示例
交互
警告
A.2.38 –i
A.2.39 -include filename
A.2.40 -inline
A.2.41 –instances=a
A.2.41.1 值
缺省值
另请参见
A.2.42 –instlib=filename
A.2.42.1 值:
缺省:
示例:
交互:
警告
另请参见:
A.2.43 –KPIC
A.2.44 –Kpic
A.2.45 –keeptmp
A.2.45.1 另请参见
A.2.46 –Lpath
A.2.46.1 交互
警告
A.2.47 –llib
A.2.47.1 交互
警告
另请参见
A.2.48 –libmieee
A.2.49 –libmil
A.2.50 -library=l[ ,l…]
A.2.50.1 值
缺省值
示例
交互
警告
另请参见
A.2.51 -m32|-m64
A.2.52 -mc
A.2.53 –migration
A.2.54 –misalign
A.2.54.1 交互
警告
A.2.55 -mr[, string]
A.2.56 –mt
A.2.56.1 另请参见
A.2.57 –native
A.2.58 –noex
A.2.59 –nofstore
A.2.59.1 另请参见
A.2.60 –nolib
A.2.61 –nolibmil
A.2.62 –noqueue
A.2.63 –norunpath
A.2.63.1 交互
A.2.64 –O
A.2.65 –Olevel
A.2.66 –o filename
A.2.66.1 交互
警告
A.2.67 +p
A.2.67.1 缺省值
交互
A.2.68 –P
A.2.68.1 另请参见
A.2.69 –p
A.2.70 –pentium
A.2.71 –pg
A.2.72 -PIC
A.2.73 –pic
A.2.74 –pta
A.2.75 –ptipath
A.2.75.1 交互
另请参见
A.2.76 –pto
A.2.77 –ptr
A.2.77.1 警告
另请参见
A.2.78 –ptv
A.2.79 –Qoption phase option[,option…]
A.2.79.1 值
示例
警告
A.2.80 –qoption phase option
A.2.81 –qp
A.2.82 –Qproduce sourcetype
A.2.83 –qproduce sourcetype
A.2.84 –Rpathname[:pathname…]
A.2.84.1 缺省值
交互
另请参见
A.2.85 –readme
A.2.86 –S
A.2.87 –s
A.2.88 –sb
A.2.89 –sbfast
A.2.90 -staticlib=l[ ,l…]
A.2.90.1 值
缺省值
示例
交互
警告
另请参见
A.2.91 -sync_stdio=[yes| no]
A.2.91.1 缺省:
示例:
警告:
A.2.92 –temp=path
A.2.92.1 另请参见
A.2.93 –template=opt[,opt…]
A.2.93.1 值
缺省值
示例
另请参见
A.2.94 –time
A.2.95 –Uname
A.2.95.1 示例
交互
另请参见
A.2.96 –unroll=n
A.2.97 –V
A.2.98 –v
A.2.99 –vdelx
A.2.99.1 缺省
警告
A.2.100 –verbose=v[,v…]
A.2.100.1 值
缺省值
交互
A.2.101 +w
A.2.101.1 缺省值
另请参见
A.2.102 +w2
A.2.102.1 另请参见
A.2.103 –w
A.2.103.1 另请参见
A.2.104 –Xm
A.2.105 –xa
A.2.105.1 交互
警告
另请参见
A.2.106 -xaddr32
A.2.107 -xalias_level[= n]
A.2.107.1 缺省值
交互
警告
A.2.108 - xannotate[=yes|no]
A.2.109 –xar
A.2.109.1 值
示例
警告
另请参见
A.2.110 –xarch=isa
A.2.110.1 用于 SPARC 的 -xarch 标志
A.2.110.2 用于 x86 的 -xarch 标志
A.2.110.3 x86 特殊注意事项
A.2.110.4 二进制兼容验证
A.2.110.5 交互
A.2.110.6 警告
A.2.111 -xautopar
A.2.111.1 另请参见
A.2.112 -xbinopt={prepare| off}
A.2.112.1 缺省值
交互
A.2.113 -xbuiltin[={ %all|%none}]
A.2.113.1 缺省值
交互
示例
A.2.114 –xcache=c
A.2.114.1 值
缺省值
示例
另请参见
A.2.115 -xcg[89|92]
A.2.116 -xchar[= o]
A.2.116.1 值
缺省值
交互
警告
A.2.117 -xcheck[= i]
A.2.117.1 值
缺省值
A.2.118 -xchip=c
A.2.118.1 值
缺省值
A.2.119 –xcode=a
A.2.119.1 值
缺省值
A.2.120 -xcrossfile[= n]
A.2.121 -xdebugformat=[stabs|dwarf]
A.2.122 -xdepend=[yes| no]
A.2.123 -xdumpmacros[= value[,value…]]
A.2.123.1 值
缺省值
示例
另请参见
A.2.124 -xe
A.2.124.1 另请参见
A.2.125 -xF[=v[,v…]]
A.2.125.1 值
缺省值
交互
另请参见
A.2.126 -xhelp=flags
A.2.127 -xhelp=readme
A.2.128 -xhwcprof
A.2.129 -xia
A.2.129.1 扩展
交互
警告
另请参见
A.2.130 -xinline[=func_spec[,func_spec…]]
A.2.130.1 值
缺省值
示例
交互
警告
另请参见
A.2.131 -xinstrument=[ no%]datarace
A.2.132 -xipo[={0|1|2}]
A.2.132.1 值
缺省值
示例
交互
警告
A.2.132.2 何时不使用 -xipo 过程间分析
另请参见
A.2.133 -xipo_archive=[a]
A.2.134 -xjobs=n
A.2.134.1 值
缺省值
示例
A.2.135 -xlang=language[,language]
A.2.135.1 值
交互
警告
另请参见
A.2.136 -xldscope={v}
A.2.136.1 值
缺省值
警告
另请参见
A.2.137 -xlibmieee
A.2.137.1 另请参见
A.2.138 -xlibmil
A.2.138.1 交互
另请参见
A.2.139 –xlibmopt
A.2.139.1 交互
另请参见
A.2.140 –xlic_lib=sunperf
A.2.141 –xlicinfo
A.2.142 -xlinkopt[= level]
A.2.142.1 值
缺省值
交互
警告
A.2.143 -xloopinfo
A.2.144 –xM
A.2.144.1 示例
交互
另请参见
A.2.145 -xM1
A.2.146 -xMD
A.2.147 -xMF
A.2.148 -xMMD
A.2.149 –xMerge
A.2.149.1 另请参见
A.2.150 -xmaxopt[=v]
A.2.151 -xmemalign=ab
A.2.151.1 值
缺省值
示例
A.2.152 -xmodel=[a]
A.2.153 –xnolib
A.2.153.1 示例
交互
警告
另请参见
A.2.154 –xnolibmil
A.2.155 –xnolibmopt
A.2.155.1 示例
A.2.156 -xnorunpath
A.2.157 -xOlevel
A.2.157.1 值
交互
缺省值
警告
另请参见
A.2.158 -xopenmp[= i]
A.2.158.1 值
缺省值
交互
警告
另请参见
A.2.159 -xpagesize=n
A.2.159.1 值
缺省值
扩展
警告
另请参见
A.2.160 -xpagesize_heap=n
A.2.160.1 值
缺省值
警告
另请参见
A.2.161 -xpagesize_stack=n
A.2.161.1 值
缺省值
警告
另请参见
A.2.162 -xpch=v
A.2.162.1 创建预编译头文件
使用预编译头文件
如何修改 make 文件
A.2.163 -xpchstop=file
A.2.163.1 另请参见
A.2.164 -xpec[={yes|no}]
A.2.165 –xpg
A.2.165.1 警告
另请参见
A.2.166 -xport64[=(v )]
A.2.166.1 值
缺省值
示例
检查 64 位值的截断
检查符号扩展
检查位字段包装的更改
警告
另请参见
A.2.167 -xprefetch[=a[,a…]]
A.2.167.1 缺省值
交互
警告
A.2.168 -xprefetch_auto_type=a
A.2.169 -xprefetch_level[= i]
A.2.169.1 值
缺省值
交互
A.2.170 -xprofile=p
A.2.170.1 值
交互
警告
另请参见
A.2.171 -xprofile_ircache[= path]
A.2.172 -xprofile_pathmap
A.2.173 -xreduction
A.2.174 –xregs=r[,r…]
A.2.174.1 值
缺省值
示例
另请参见
A.2.175 -xrestrict[= f]
A.2.175.1 限定指针
A.2.176 –xs
A.2.177 –xsafe=mem
A.2.177.1 交互
A.2.177.2 警告
A.2.178 –xsb
A.2.179 –xsbfast
A.2.180 –xspace
A.2.181 –xtarget=t
A.2.181.1 -xtarget 值(按平台)
-xtarget 值(SPARC 平台)
-xtarget 值(x86 平台)
缺省值
扩展
示例
交互
警告
A.2.182 -xthreadvar[= o]
A.2.182.1 值
缺省值
交互
警告
另请参见
A.2.183 –xtime
A.2.184 -xtrigraphs[={ yes|no}]
A.2.184.1 值
缺省值
示例
另请参见
A.2.185 –xunroll= n
A.2.185.1 值
A.2.186 -xustr={ascii_utf16_ushort| no}
A.2.186.1 值
缺省值
示例
A.2.187 -xvector[= a]
A.2.187.1 缺省值
交互
A.2.188 -xvis[={yes|no}]
A.2.188.1 缺省值
另请参见
A.2.189 -xvpara
A.2.190 –xwe
A.2.190.1 另请参见
A.2.191 -Yc,path
A.2.191.1 值
交互
另请参见
A.2.192 -z[ ]arg
附录 B Pragma
B.1 Pragma 形式
B.1.1 将函数作为 pragma 参数进行重载
B.2 Pragma 参考
B.2.1 #pragma align
B.2.2 #pragma does_not_read_global_data
B.2.3 #pragma does_not_return
B.2.4 #pragma does_not_write_global_data
B.2.5 #pragma dumpmacro s
B.2.6 #pragma end_dumpmacros
B.2.7 #pragma fini
B.2.8 #pragma hdrstop
B.2.9 #pragma ident
B.2.10 #pragma init
B.2.11 #pragma must_have_frame
B.2.12 #pragma no_side_effect
B.2.13 #pragma opt
B.2.14 #pragma pack( n)
B.2.15 #pragma rarely_called
B.2.16 #pragma returns_new_memory
B.2.17 #pragma unknown_control_flow
B.2.18 #pragma weak
B.2.18.1 #pragma weak name
#pragma weak name1 = name2
重载函数
参考sun文档

你可能感兴趣的:(C++基础知识)