C/C++ では、変数が __auto または default(__auto) 句を使用して自動スコープ宣言され、その変数に OpenMP 仕様に従って事前定義されたスコープがある場合、コンパイラはその事前定義されたスコープに従って変数のスコープを宣言します。
C/C++ では、次の変数に事前定義されるスコープがあります。
threadprivate 指令の変数は threadprivate です。
構文内のスコープで宣言された自動記憶領域を持つ変数は private です。
割り当てられたヒープ記憶領域を持つ変数は shared です。
静的データメンバーは shared です。
for または parallel for 構文の for ループ内のループ反復変数は、その構文内では private です。
可変メンバーを持たない const-qualified 型の変数は shared です。
C および C++ の自動スコープ宣言が適用されるのは、基本データ型の整数、浮動小数点、ポインタのみです。ユーザーが構造変数またはクラス変数の自動スコープ宣言を指定する場合、コンパイラは変数を shared としてスコープ宣言し、それを包含する並列領域は 1 つのスレッドとして実行されます。