Visual Studio 2005中的OpenMP

时间:2009-10-06 08:55:44

标签: visual-studio-2005 openmp

我正在尝试使用OpenMP在Visual Studio 2005 Professional中创建并行for循环。我已经包含了omp.h并指定了/ openmp编译器标志。但是,我甚至无法得到最简单的并行for循环来编译。

#pragma omp parallel for
for ( int i = 0; i < 10; ++i )
{
    int a = i + i;
}

以上在#pragma行产生编译器错误C3005。

谷歌没有多大帮助。我只找到一个模糊的日语网站,用户有类似的问题。没有提到决议。

标准并行块编译良好。

#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。似乎'for'让编译器感到困惑,但它不应该。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。一些天才在标题内深度定义了以下宏:

#define for   if ( false ) ; else for

我唯一的猜测是,它用于在Visual C ++ 6中正确地将for循环中声明的变量放到范围内。取消定义或注释掉宏解决了这个问题。