ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris Studio 12.3: OpenMP API ユーザーガイド Oracle Solaris Studio 12.3 Information Library (日本語) |
タスクの自動スコープ宣言規則と、自動スコープ宣言の結果は、今後のリリースで変更される可能性があります。また、暗黙的に決定されたスコープ宣言規則と自動スコープ宣言規則が適用される順序も、今後のリリースで変更される可能性があります。
プログラマは _auto(list-of-variables) 節または default(_auto) 節を使用し、明示的に自動スコープ宣言を要求します。default(_auto) または _auto(list-of-variables) 節を parallel 構文に対して指定しても、parallel 構文に字句的または動的に包含される task 構文にも同じ節が適用されることを意味するわけではありません。
事前定義された暗黙的スコープを持たない変数を自動スコープ宣言する場合、コンパイラは、変数の使用について、前述の規則に対して順番に確認します。規則に一致する場合、コンパイラはその規則に従って変数のスコープを決定します。一致する規則がない場合、または自動スコープ宣言が変数を処理できない場合 (次の節で説明されているいくつかの制限事項のため)、コンパイラは変数を SHARED とスコープ宣言し、parallel または task 構文を IF (.FALSE.) または if(0) 節が指定されているかのように処理します。
自動スコープ宣言が失敗する理由は、一般的に 2 つあります。1 つの理由は、変数の使われ方が規則のどれにも一致しないことです。もう 1 つの理由は、ソースコードが複雑すぎて、コンパイラが十分な解析を行えないことです。こうした原因としてよくあるのは、たとえば、関数呼び出しや複雑な配列添え字、メモリー別名、ユーザー実装の同期などです。