任务:需要 OpenMP 指令名称

1 c++ openmp

这是我的代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)


Visual Studio 返回 C3001 错误“任务:需要 OpenMP 指令名称”
如果我评论所有的“pragma”,它就可以正常工作,所以 OpenMP 肯定有问题。其他一些带有“#pragma omp parallel”的程序工作正常,这只是“task”指令的问题。
可能是什么问题呢?

acr*_*075 6

Visual C++支持OpenMP 2.0 标准。

OpenMP引入了 OpenMP 3.0 的任务

即它不受支持。