isolated_call

C に適用 C++ に適用

目的

ソース・ファイル内の副次作用がない関数を指定する。

構文

                          .-:-------------.
                          V               |
>>- -q--isolated_call--=----function_name-+--------------------><
 
 

ここで、


function_name 副次作用がない関数 (ポインターまたは参照パラメーターが指す変数の値を変更する場合は除く)、あるいは副次作用がある関数や処理に依存しない関数の名前です。

副次作用 とは、実行時環境の状態の変更です。このような変更の例としては、揮発オブジェクトへのアクセス、外部オブジェクトの変更、ファイルの変更、またはこれらのいずれかを行う別の関数の呼び出しなどが挙げられます。副次作用のない関数は、外部変数および静的変数を変更しません。

function_name には、関数をコロン (:) で区切ってリストすることができます。

#pragma isolated_callおよび #pragma optionsも参照してください。

関数に分離としてマークを付けた場合は、次のことを最適化プログラムに示すことによって、最適化されたコードの実行時のパフォーマンスを向上させることができます。

#pragma options isolated_call ディレクティブは、ファイルの先頭で、最初の C または C++ ステートメントの前に指定しなければなりません。 #pragma isolated_call ディレクティブは、ソース・ファイルの任意の位置で使用することができます。

関数が、副次作用を持たないものとして誤って識別された場合、その結果得られるプログラムの振る舞いは、予期しないものになるか、または誤った結果を招く可能性があります。

myprogram.c をコンパイルして、関数 myfunction(int) および classfunction(double) に副次作用がないことを指定するには、以下を入力します。

xlc myprogram.c -qisolated_call=myfunction:classfunction

関連参照

コンパイラーのコマンド行オプション
#pragma isolated_call
#pragma options IBM Copyright 2003