Error del compilador C3038
'var': la variable de la cláusula 'private' no puede ser una variable de reducción en el contexto envolvente
Las variables que aparecen en la cláusula reduction de una directiva paralela no pueden especificarse en una cláusula private en una directiva de uso compartido que se enlaza a la construcción paralela.
El ejemplo siguiente genera la advertencia 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;
}
}