在vs中使用openmp的task指令

问题遇到的现象和发生背景

今天学习了openmp的task指令,用来实现斐波拉契数列,在visualstudio中编译的时候一直显示报错,弄了很久,在网上也没搜到有结果。

用代码块功能插入代码,请勿粘贴截图
#include
#include
#include
int fib(int n)
{
    if (n < 2)
        return n;
    int x, y;
#pragma omp task
    {
         x = fib(n - 1); 
    }
#pragma omp task
    {
         y = fib(n - 2);
    }
#pragma omp taskwait
        return x + y;
    
}

int main(int arg, char** argv)
{
    int num_threads = 4;
    omp_set_num_threads(num_threads);
    int  n = 7;
    double time1 = omp_get_wtime();
#pragma omp parallel
    {
    int sum = fib(n);
    }
    double time2 = omp_get_wtime();
    printf("the time is %f\n ", time2 - time1);
    return 0;
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

我一开始以为是task的格式错了,然后对着练习的代码一个个看,也没错;练习的代码是在linux上运行的,我是在vs上使用的,会不会是这个原因呢?

我想要达到的结果

成功编译

这是vs的问题,貌似不支持task,用gcc就好。