当我在visual studio 2015中运行以下代码时,我收到错误" else"声明"期待声明"。由于我已经指定了并行区域,因此我无法弄清楚为什么这不起作用。
void test(int a) {
if (a % 2 == 0) {
#pragma omp parallel{
#pragma omp for
for (int i = 0; i < 10; ++i) {
cout << i;
}
}
}
else {
//#pragma omp parallel for
for (int i = 0; i < 10; ++i) {
cout << i;
}
}
}
没有openMP声明,代码运行良好。为什么会发生以及如何解决?非常感谢!
答案 0 :(得分:1)
你的问题是由额外的}来完成的,这使得if语句中的else语句关闭了,并且编译器不知道如何处理它
void test(int a)
{
if (a % 2 == 0)
{
for (int i = 0; i < 10; ++i) {
cout << i;
}
} //here is the extra }!
}else
{
for (int i = 0; i < 10; ++i)
{
cout << i;
}
}
}
这里是没有额外的代码}
void test(int a)
{
if (a % 2 == 0)
{
for (int i = 0; i < 10; ++i) {
cout << i;
}
}else
{
for (int i = 0; i < 10; ++i)
{
cout << i;
}
}
}
另外我注意到你的格式有点奇怪,它可能有助于你没有注意到额外的}
祝你好运! :)
答案 1 :(得分:0)
我认为问题是你的括号{}
#include<iostream>
using namespace std;
void test(int a)
{
if (a % 2 == 0)
{
#pragma omp parallel
{
#pragma omp for
for (int i = 0; i < 10; ++i)
{
cout << i;
}
}
}
else
{
#pragma omp parallel for
for (int i = 0; i < 10; ++i)
{
cout << i;
}
}
}
int main()
{
test(3);
return 0;
}
结果:
0123456789Program ended with exit code: 0