Erreur du compilateur C3055
'symbole' : impossible de référencer le symbole avant qu’il ne soit utilisé dans la directive 'threadprivate'
Un symbole a été référencé puis utilisé dans une clause threadprivate , ce qui n’est pas autorisé.
L’exemple suivant génère l’erreur C3055 :
// C3055.cpp
// compile with: /openmp
int x, y;
int z = x;
#pragma omp threadprivate(x, y) // C3055
void test() {
#pragma omp parallel copyin(x, y)
{
x = y;
}
}
Résolution possible :
// C3055b.cpp
// compile with: /openmp /LD
int x, y, z;
#pragma omp threadprivate(x, y)
void test() {
#pragma omp parallel copyin(x, y)
{
x = y;
}
}