質問

私は、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ループで宣言された変数を取得したり、マクロを実行しても問題が解決しコメントアウトするために使用されたされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top