我正在尝试使用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'让编译器感到困惑,但它不应该。有什么想法吗?
答案 0 :(得分:0)
我发现了问题。一些天才在标题内深度定义了以下宏:
#define for if ( false ) ; else for
我唯一的猜测是,它用于在Visual C ++ 6中正确地将for循环中声明的变量放到范围内。取消定义或注释掉宏解决了这个问题。