Erreur du compilateur C3030
'variable' : la variable de la clause/directive 'reduction' ne peut pas avoir un type référence
Vous pouvez uniquement passer des paramètres de valeur à certaines clauses, telles que la clause reduction.
L’exemple suivant génère l’erreur C3030 :
// C3030.cpp
// compile with: /openmp /link vcomps.lib
#include "omp.h"
void test(int &r) {
#pragma omp parallel reduction(+ : r) // C3030
;
}
void test2(int r) {
#pragma omp parallel reduction(+ : r) // OK
;
}
int main(int argc, char** argv) {
int& r = *((int*)argv);
int s = *((int*)argv);
#pragma omp parallel reduction(+ : r) // C3030
;
#pragma omp parallel reduction(+ : s) // OK
;
}