Поделиться через


Ошибка компилятора C3039

"переменная": переменная индекса в операторе for директивы OpenMP не может быть редукционной переменной

Замечания

Переменная индекса является неявно частной, поэтому ее нельзя использовать в предложении reduction в заключающей директиве parallel .

Пример

В следующем примере вызывается ошибка C3039.

// C3039.cpp
// compile with: /openmp /c
int g_i;

int main() {
   int i;

   #pragma omp parallel reduction(+: i)
   {
      #pragma omp for
      for (i = 0; i < 10; ++i)   // C3039
         g_i += i;
   }
}