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)
{
}
}