我正在尝试在Visual Studio 10下使用简单的#pragma omp parallel for
,我收到一个我不明白的错误
这就是我的所作所为:
#pragma omp parallel for
for (int i(0); i < size; ++i)
{
// do some stuff
}
我在编译时遇到这些错误:
error C2059: syntax error : 'constant' // on the for() line
error C2059: syntax error : ';' // on the for() line
error C2143: syntax error : missing ';' before '{'
// repeat previous error for every { or } in file
fatal error C1004: unexpected end-of-file found // on last line of file
在编译器选项中激活openmp支持。此代码编译并运行完美,没有openmp指令。
我试图将for循环嵌套在这样的大括号中:
#pragma omp parallel for
{
for (int i(0); i < size; ++i)
{
// do some stuff
}
}
然后编译器告诉我他希望在#pragma指令之后有一个for循环。
有谁看到我在这里做错了什么?它让我疯狂,因为我已经在其他程序的相同条件下成功使用了OpenMP。
答案 0 :(得分:1)
当OpenMP处于活动状态时,我不认为for
循环控制块内支持对象样式初始化器。您应该将代码重写为:
for (int i = 0; i < size; ++i)
在第二种情况下,错误是由于omp for
需要紧跟for
循环而不是代码块。