Erreur du compilateur C3038
'var' : la variable de la clause 'private' ne peut pas être une variable de réduction dans un contexte englobant
Les variables qui apparaissent dans la clause reduction d’une directive parallèle ne peuvent pas être spécifiées dans une clause private d’une directive de partage de travail qui est liée à la construction parallèle.
L’exemple suivant génère l’erreur C3038 :
// C3038.cpp
// compile with: /openmp /c
int g_i, g_i2;
int main() {
int i;
#pragma omp parallel reduction(+: g_i)
{
#pragma omp for private(g_i) // C3038
// try the following line instead
// #pragma omp for private(g_i2)
for (i = 0; i < 10; ++i)
g_i += i;
}
}