VS10 下的 openmp 语法错误

openmp syntax error under VS10

本文关键字:错误 语法 openmp 下的 VS10      更新时间:2023-10-16

我正在尝试在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。

我认为当 OpenMP 处于活动状态时,for 循环控制块内不支持对象样式初始化器。您应该将代码重写为:

for (int i = 0; i < size; ++i)

在第二种情况下,错误是由于omp for需要紧随其后的for循环而不是代码块。