Oracle® Solaris Studio 12.4: OpenMP API ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

6.5 自動スコープ宣言に関する注意事項

_auto(list-of-variables) または default(_auto) 節を parallel 構文に対して指定しても、parallel 構文に字句的または動的に包含される task 構文にも同じ節が適用されることを意味するわけではありません。

事前定義された暗黙的スコープを持たない変数を自動スコープ宣言する場合、コンパイラは、変数の使用について、規則に対して順番に確認します。規則に一致する場合、コンパイラはその規則に従って変数のスコープを決定します。一致する規則がない場合、または自動スコープ宣言が変数を処理できない場合、コンパイラは変数を shared とスコープ宣言し、parallel または task 構文を if(0) (Fortran では if(.false.)) 節が指定されているかのように処理します。詳細は、自動スコープ宣言を使用する際の制限事項を参照してください。

変数の使用がどの規則とも一致しない場合、またはコンパイラが十分な解析を行うにはソースコードが複雑すぎる場合は、通常、変数を自動スコープ宣言できません。こうした原因としてよくあるのは、たとえば、関数呼び出しや複雑な配列添え字、メモリー別名、ユーザー実装の同期などです。