编译器错误 C3029

“symbol”: 只能在 OpenMP 指令中的 data-sharing 子句中出现一次

指令中一个或多个子句中多次使用符号。 符号只能在指令中使用一次。

以下示例生成 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
      ;
}