Error del compilador C3056
'símbolo': el símbolo no está en el mismo ámbito de la directiva 'threadprivate'
Un símbolo usado en una cláusula threadprivate debe estar en el mismo ámbito que la cláusula threadprivate
.
El ejemplo siguiente genera la advertencia C3056:
// C3056.cpp
// compile with: /openmp
int x, y;
void test() {
#pragma omp threadprivate(x, y) // C3056
#pragma omp parallel copyin(x, y)
{
x = y;
}
}
Posible solución:
// C3056b.cpp
// compile with: /openmp /LD
int x, y;
#pragma omp threadprivate(x, y)
void test() {
#pragma omp parallel copyin(x, y)
{
x = y;
}
}