Compartir a través de


Error del compilador C3043

la directiva 'critical' de OpenMP no se puede anidar en una directiva 'critical' con el mismo nombre

Una directiva critical no se puede anidar en una directiva critical con el mismo nombre.

El ejemplo siguiente genera la advertencia C3043:

// C3043.cpp
// compile with: /openmp /c
#include "omp.h"

int main() {
   int n1 = 1, n2 = 2, n3 = 3;

   #pragma omp parallel
   {
      ++n2;

      #pragma omp critical(MyTest)
      {
         ++n2;

         #pragma omp critical(MyTest)   // C3043
         // try the following line instead
         // #pragma omp critical(MyTest2)
         {
            ++n3;
         }
      }
   }
}