Compartir a través de


Error del compilador C3058

'symbol': símbolo no declarado como 'threadprivate' antes de utilizarse en la cláusula 'copyin'

Un símbolo se debe declarar primero como threadprivate antes de poderlo utilizar en una cláusula copyin .

El ejemplo siguiente genera la advertencia C3058:

// C3058.cpp
// compile with: /openmp
int x, y, z;
#pragma omp threadprivate(x, z)

void test() {
   #pragma omp parallel copyin(x, y)   // C3058
   {
   }
}

Posible solución:

// C3058b.cpp
// compile with: /openmp /LD
int x, y, z;
#pragma omp threadprivate(x, y)

void test() {
   #pragma omp parallel copyin(x, y)
   {
   }
}