Erreur du compilateur C3058
'symbol' : symbole non déclaré en tant que 'threadprivate' avant d’être utilisé dans la clause 'copyin'
Un symbole doit d’abord être déclaré en tant que threadprivate avant de pouvoir être utilisé dans une clause copyin .
L’exemple suivant génère l’erreur C3058 :
// C3058.cpp
// compile with: /openmp
int x, y, z;
#pragma omp threadprivate(x, z)
void test() {
#pragma omp parallel copyin(x, y) // C3058
{
}
}
Résolution possible :
// C3058b.cpp
// compile with: /openmp /LD
int x, y, z;
#pragma omp threadprivate(x, y)
void test() {
#pragma omp parallel copyin(x, y)
{
}
}