クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
Visual C++
C/C++ プログラムのビルド
C/C++ ビルド エラー
 コンパイラの警告 (レベル 4) C4938
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
Visual C++ の概念 : C/C++ プログラムのビルド
コンパイラの警告 (レベル 4) C4938

エラー メッセージ

'var' : 浮動小数点の減少変数は、/fp:strict または #pragma fenv_access で矛盾する結果を生じさせる可能性があります

OpenMP 浮動小数点の減少では /fp:strict または fenv_access を使用しないでください。合計が異なる順序で計算されます。したがって、これらを使用した場合の結果は、/openmp を指定しなかった場合の結果と異なる可能性があります。

次の例では C4938 警告が生成されます。

// C4938.cpp
// compile with: /openmp /W4 /fp:strict /c
// #pragma fenv_access(on)
extern double *a; 

double test(int first, int last) { 
   double sum = 0.0; 
   #pragma omp parallel for reduction(+: sum)   // C4938
   for (int i = first ; i <= last ; ++i) 
      sum += a[i]; 
   return sum; 
}

明示的な並列化を行わない場合、合計は次のように計算されます。

sum = a[first] + a[first + 1] + ... + a[last]; 

明示的な並列化を行い 2 つのスレッドを指定すると、合計は次のように計算されます。

sum1 = a[first] + ... a[first + last / 2]; 
sum2 = a[(first + last / 2) + 1] + ... a[last]; 
sum = sum1 + sum2;
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2012 Microsoft. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker