Visual Studio 2005でのOpenMP
-
19-09-2019 - |
質問
私は、Visual Studio 2005 Professionalのループの並列を作成するためのOpenMPを使用しようとしています。私はomp.h含まれており、/ OpenMPのコンパイラフラグを指定しています。しかし、私はコンパイルするループのための最も単純な並列を取得することはできません。
#pragma omp parallel for
for ( int i = 0; i < 10; ++i )
{
int a = i + i;
}
上記の#pragmaラインでコンパイラエラーC3005を生成します。
Googleはあまり役立っていません。私は同様の問題を持つユーザーで1つのあいまいな日本のウェブサイトを見つけました。解像度のは言及しない。
標準並列ブロックは正常コンパイルします。
#prgram omp parallel
{
// Do some stuff
}
あなたがforループを追加しようとするまで、つまります。
#pragma omp parallel
{
#pragma omp for
for ( int i = 0; i < 10; ++i )
{
int a = i + i;
}
}
上記の原因のコンパイラエラーC3001。これは、コンパイラに紛らわしいですが、それはすべきではない「の」そうです。任意のアイデア?
解決
私は問題を発見しました。いくつかの天才が定義されたヘッダ内の次のマクロ深います:
#define for if ( false ) ; else for
私の唯一の推測では、これが正しくのVisual C ++ 6.定義解除にスコープへのforループで宣言された変数を取得したり、マクロを実行しても問題が解決しコメントアウトするために使用されたされます。
所属していません StackOverflow