JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:C++ 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分C++ 编译器

1.  C++ 编译器

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 警告和错误

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++ 编译器选项

第 2 部分编写 C++ 程序

4.  语言扩展

5.  程序组织

6.  创建和使用模板

7.  编译模板

8.  异常处理

9.  改善程序性能

10.  生成多线程程序

第 3 部分库

11.  使用库

12.  使用 C++ 标准库

13.  使用传统 iostream

14.  生成库

第 4 部分附录

A.  C++ 编译器选项

B.  Pragma

词汇表

索引

2.2 调用编译器

本章其余部分讨论了 CC 命令使用的约定、编译器源代码行指令和其他有关编译器的使用问题。

2.2.1 命令语法

编译器命令行的一般语法如下所示:

CC [options] [source-files] [object-files] [libraries]

选项是前缀为短划线 () 或加号 (+) 的选项关键字。某些选项带有参数。

通常,编译器选项的处理顺序是从左到右,从而允许有选择地覆盖宏选项(包含其他选项的选项)。在大多数的情况下,如果您多次指定同一个选项,那么最右边的赋值会覆盖前面的赋值,而不会累积。注意以下特殊情况:

源文件、目标文件和库按它们在命令行上出现的顺序编译并链接。

在以下示例中,在启用了运行时调试的情况下,使用 CC 编译两个源文件(growth.Cfft.C)来生成名为 growth 的可执行文件:

example% CC -g -o growth growth.C fft.C

2.2.2 文件名称约定

命令行上附加在文件名后面的后缀确定了编译器处理文件的方式。如果文件名称的后缀没有在下表中列出,或文件名称没有后缀,那么都要传递到链接程序。

表 2-1 C++ 编译器识别的文件名称后缀

后缀
语言
操作
.c
C++
以 C++ 源文件编译,将目标文件放在当前目录中;目标文件的缺省名称是源文件名称加上 .o 后缀。
.C
C++
操作与 .c 后缀相同。
.cc
C++
操作与 .c 后缀相同。
.cpp
C++
操作与 .c 后缀相同。
.cxx
C++
操作与 .c 后缀相同。
.c++
C++
操作与 .c 后缀相同。
.i
C++
将预处理程序输出文件作为 C++ 源文件处理。操作与 .c 后缀相同。
.s
汇编程序
使用汇编程序的汇编源文件。
.S
汇编程序
使用 C 语言预处理程序和汇编程序的汇编源文件。
.il
内联扩展
处理内联扩展的汇编内联模板文件。编译器将使用模板来扩展选定例程的内联调用。(内联模板文件是特殊的汇编文件。请参见 inline(1) 手册页。
.o
目标文件
将目标文件传递到链接程序。
.a
静态(归档)库
将目标库名传递到链接程序。
.so

.so.n

动态(共享)库
将共享对象的名称传递到链接程序。

2.2.3 使用多个源文件

C++ 编译器在命令行上接受多个源文件。编译器编译的单个源文件和其直接或间接支持的任何文件一起统称为编译单元。C++ 将每个源作为一个单独的编译单元处理。