Вот мой код:
#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" .
Если я прокомментирую всю "прагму"msgstr "все работает нормально, поэтому проблема с OpenMPНекоторые другие программы с "#pragma omp parallel" работают нормально, это просто проблема с директивой "task".
В чем может быть проблема?