编译器错误 C3031
“var”:“reduction”子句中的变量必须是标量算术类型
向 reduction 子句传递了错误类型的变量。
下面的示例生成 C3031:
// C3031.cpp
// compile with: /openmp /link vcomps.lib
#include <stdio.h>
#include "omp.h"
typedef struct {
int n;
} Incomplete;
extern Incomplete inc;
int i = 9;
int main() {
#pragma omp parallel reduction(+: inc) // C3031
;
#pragma omp parallel reduction(+: i) // OK
;
}