ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: C++ ユーザーズガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
B.2.2 #pragma does_not_read_global_data
B.2.4 #pragma does_not_write_global_data
B.2.13 #pragma must_have_frame
B.2.18 #pragma returns_new_memory
次に、C++ コンパイラのプラグマのさまざまな書式を示します。
#pragma keyword #pragma keyword ( a [ , a ] ...) [ , keyword ( a [ , a ] ...) ] ,... #pragma sun keyword
変数 keyword は特定の指令を示し、a は引数を示します。
ここで示すいくつかのプラグマは、引数として関数名をとります。その関数が多重定義されている場合、プラグマは、その引数として、その直前の関数宣言を使用します。次の例を考えてみましょう。
int bar(int); int foo(int); int foo(double); #pragma does_not_read_global_data(foo, bar)
この例の foo は、プラグマの直前の foo の宣言である foo(double) を意味し、bar は、単に宣言されている bar である bar(int) を意味します。ここで、foo が再び多重定義されている次の例を考えてみます。
int foo(int); int foo(double); int bar(int); #pragma does_not_read_global_data(foo, bar)
この例の bar は、単に宣言されている bar である bar(int) を意味します。しかし、プラグマは、どのバージョンの foo を使用すべきか分かりません。この問題を解決するには、プラグマが使用すべき foo の定義の直後にプログラムを置く必要があります。
次のプラグマは、この節で説明した方法で選択を行います。
does_not_read_global_data
does_not_return
does_not_write_global_data
no_side_effect
opt
rarely_called
returns_new_memory