这是我的代码:
#include <stdio.h>
#include <cstdlib>
#include <locale>
#include <omp.h>
using namespace std;
typedef pair<int, int> pii;
typedef long long ll;
ll fib(int n) {
if (n <= 1)
return 1;
ll a, b;
#pragma omp task shared(a)
a = fib(n - 1);
#pragma omp task shared(b)
b = fib(n - 2);
#pragma omp taskwait
return a + b;
}
int main(int argc, char* argv[]) {
setlocale(LC_ALL, "");
int n;
scanf_s("%d", &n);
printf("Result: %lld\n", fib(n));
system("pause");
return 0;
}
<小时/> Visual Studio返回C3001错误“任务:需要OpenMP指令名称” 如果我评论所有“pragma”它工作正常,那么OpenMP一定存在问题。其他一些带有“#pragma omp parallel”的程序工作正常,这只是“任务”指令的问题。