C++ 编译器 pragma 的各种形式如下所示:
#pragma keyword #pragma keyword ( a [ , a ] ...) [ , keyword ( a [ , a ] ...) ] ,... #pragma sun keyword |
变量 keyword 指特定指令;a 表示参数。
本附录中列出了几个将函数名称作为参数的 pragma。如果重载该函数,则 pragma 使用其前面的函数声明作为其参数。请看以下示例:
int bar(int); int foo(int); int foo(double); #pragma does_not_read_global_data(foo, bar) |
在此示例中,foo 指 foo(double),即 pragma 紧前面的 foo 声明;而 bar 指 bar(int),即唯一声明的 bar。现在,请看以下示例,在此示例中再次重载了 foo:
int foo(int); int foo(double); int bar(int); #pragma does_not_read_global_data(foo, bar) |
在此示例中,bar 指 bar(int),即唯一声明的 bar。但 pragma 并不知道要使用哪个版本的 foo。要更正此问题,必须将 pragma 放在希望 pragma 使用的 foo 定义的紧后面。
以下 pragma 使用本节中介绍的选择方法:
does_not_read_global_data
does_not_return
does_not_write_global_data
no_side_effect
opt
rarely_called
returns_new_memory