Oracle Solaris Studio 12.2:C++ 用户指南

使用预编译头文件

可指定 -xpch=use:pch_filename 以使用预编译头文件。您可以将 include 文件同一序列中任意数量的源文件指定为用于创建预编译头文件的源文件。例如,在 use 模式中命令类似于:CC -xpch=use:foo.Cpch foo.c bar.cc foobar.cc

如果下列情况为真,就只应使用现有的预编译头文件。如果以下任意条件不成立,则应重新创建预编译头文件:

在多个源文件间共享预编译头文件,这些源文件必须共享一组共同的 include 文件(按其初始标记序列)。该初始标记序列称为活前缀。活前缀必须在使用相同预编译头文件的所有源文件中解释一致。

源文件的活前缀只能包含注释和以下任意预处理程序指令:

#include
#if/ifdef/ifndef/else/elif/endif
#define/undef
#ident (if identical, passed through as is)
#pragma (if identical)

以上任何指令都可以引用宏。#else#elif#endif 指令必须在活前缀内匹配。

在共享预编译头文件的每个文件的活前缀中,每个相应的 #define#undef 指令都必须引用相同的符号(例如每个 #define 必须引用同一个值)。这些指令在每个活前缀中出现的顺序也必须相同。每个相应 pragma 也必须相同,并且必须按相同顺序出现在共享预编译头文件的所有文件中。

并入预编译头文件的头文件一定不得违反以下约束。这里没有定义对违反任意这些约束的程序的编译结果。