2009-10-06 74 views
0

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

#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'令编译器感到困惑,但它不应该是。有任何想法吗?

+0

很奇怪。我刚刚编译了所有三个代码片段,没有任何问题。 – macbirdie

回答

0

我发现了这个问题。一些天才的定义下面的宏深的标题中:

#define for if (false) ; else for 

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