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

B.1 Pragma 形式

C++ 编译器 pragma 的各种形式如下所示:


#pragma keyword
#pragma keyword ( a [ , a ] ...) [ , keyword ( a [ , a ] ...) ] ,...
#pragma sun keyword

变量 keyword 指特定指令;a 表示参数。

B.1.1 将函数作为 pragma 参数进行重载

本附录中列出了几个将函数名称作为参数的 pragma。如果重载该函数,则 pragma 使用其前面的函数声明作为其参数。请看以下示例:


int bar(int);
int foo(int);
int foo(double);
#pragma does_not_read_global_data(foo, bar)

在此示例中,foofoo(double),即 pragma 紧前面的 foo 声明;而 barbar(int),即唯一声明的 bar。现在,请看以下示例,在此示例中再次重载了 foo


int foo(int);
int foo(double);
int bar(int);
#pragma does_not_read_global_data(foo, bar)

在此示例中,barbar(int),即唯一声明的 bar。但 pragma 并不知道要使用哪个版本的 foo。要更正此问题,必须将 pragma 放在希望 pragma 使用的 foo 定义的紧后面。

以下 pragma 使用本节中介绍的选择方法: