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.5 预处理指令和名称

本节讨论了关于预处理 C++ 编译器所特有的指令的信息。

2.5.1 Pragma

预处理程序指令 pragma 是 C++ 标准的一部分,但每个编译器中,pragma 的形式、内容和含义都不相同。有关 C++ 编译器可识别的 pragma 的详细信息,请参见附录 B

Oracle Solaris Studio C++ 还支持 C99 关键字 _Pragma。以下两种调用是等效的:

#pragma dumpmacros(defs)     
_Pragma("dumpmacros(defs)") 

要使用 _Pragma 而不是 #pragma,请将 pragma 文本写成文字字符串(用括号括起来作为 _Pragma 关键字的一个参数)。

2.5.2 具有可变数目的参数的宏

C++ 编译器接受以下形式的 #define 预处理程序指令。

#define identifier (...) replacement-list
#define identifier (identifier-list, ...) replacement-list

如果列出的宏参数以省略号结尾,那么该宏的调用允许使用除了宏参数以外的其他更多参数。其他参数(包括逗号)收集到一个字符串中,宏替换列表中的名称 __VA_ARGS__ 可以引用该字符串。

以下示例说明了如何使用可变参数列表的宏。

#define debug(...) fprintf(stderr, __VA_ARGS__)
#define showlist(...) puts(#__VA_ARGS__)
#define report(test, ...) ((test)?puts(#test):\
                        printf(__VA_ARGS__))
debug(“Flag”);
debug(“X = %d\n”,x);
showlist(The first, second, and third items.);
report(x>y, “x is %d but y is %d”, x, y);

其结果如下:

fprintf(stderr, “Flag”);
fprintf(stderr, “X = %d\n”, x);
puts(“The first, second, and third items.”);
((x>y)?puts(“x>y”):printf(“x is %d but y is %d”, x, y));

2.5.3 预定义的名称

附录中的A.2.8 -Dname[ =def]介绍了预定义的宏。可以在 #ifdef 这样的预处理程序条件中使用这些值。+p 选项可防止自动定义 sununixsparci386 预定义宏。

2.5.4 警告和错误

#error#warning 预处理程序指令可用来生成编译时诊断。

#error token-string
发送错误诊断 token-string 并终止编译操作
#warning token-string

发送警告诊断 token-string 并继续执行编译操作。