Erro C3056 do Compilador
'symbol': símbolo não está no mesmo escopo da diretiva 'threadprivate'
Um símbolo usado em uma cláusula threadprivate deve estar no mesmo escopo que a cláusula threadprivate
.
A seguinte amostra gera 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;
}
}
Resolução possível:
// C3056b.cpp
// compile with: /openmp /LD
int x, y;
#pragma omp threadprivate(x, y)
void test() {
#pragma omp parallel copyin(x, y)
{
x = y;
}
}