嗨:)我的代码有问题。在Linux上工作正常,但在Visual Studio上:
未使用变量a,b,c进行初始化。
//#include "pch.h"
#include <omp.h>
#include <iostream>
using namespace std;
int fun1(int a) { return a * a; };
int fun2(int a) { return a + a; };
int fun3(int a) { return a + a + a; };
void printFun(int a, int b, int c) { cout << "\na: " << a << " b: " << b << " c: " << c; };
int main()
{
omp_set_num_threads(4);
#pragma omp parallel
{
int a, b, c;
#pragma omp sections
{
#pragma omp section
a = fun1(3);
#pragma omp section
b = fun2(2);
#pragma omp section
c = fun3(4);
}
#pragma omp single //master
printFun(a, b, c);
}
}
[当我将“单”更改为“主”时,一切正常,但是我不明白为什么我不能像使用“ for”而不是“ sections”那样使用“ single”。
感谢您的帮助
sfmbe
我认为代码根本不应该工作,MSVC编译器实际上正在做“正确的事情”。