OpenMP - 为什么firstprivate导致错误?

Cep*_*pod 2 c openmp

为什么我会收到此错误,我该怎么办?

error: firstprivate variable 'j' is private in outer context

void foo() {
    int i;
    int j = 10;
    #pragma omp for firstprivate(j)
    for (i = 0; i < 10; i++)
        printf("%d\n", j);
}
Run Code Online (Sandbox Code Playgroud)

Fre*_*Foo 7

如果你使用pragma它可以工作

#pragma omp parallel for firstprivate(j)
Run Code Online (Sandbox Code Playgroud)

注意omp for并且omp parallel for不是一回事:后者是omp for内部的简写omp parallel.