Erreur du compilateur C3029

'symbol' : ne peut figurer qu’une seule fois dans les clauses de partage de données d’une directive OpenMP

Un symbole a été utilisé plusieurs fois dans une ou plusieurs clauses d’une directive. Le symbole ne peut être utilisé qu’une seule fois dans la directive.

L’exemple suivant génère l’erreur C3029 :

// C3029.cpp
// compile with: /openmp /link vcomps.lib
#include "omp.h"

int g_i;

int main() {
   int i, x;

   #pragma omp parallel reduction(+ : x, x)   // C3029
      ;

   #pragma omp parallel reduction(+ : x)   // OK
      ;

   #pragma omp parallel private(x) reduction(+ : x)   // C3029
      ;

   #pragma omp parallel reduction(+ : x)   // OK
      ;
}