1 int result = 0;
 2 int b = 0;
 3 #pragma  omp for reduction(+:result) private(b)
 4 for(int i = 0; i < size; i++) {
 5    ifile >> b;
 6    if(b== 100)
 7      result++;
 8 }

为什么会出现此错误?

(3)错误C3037:“结果”:“缩减”子句中的变量必须在封闭上下文中共享

我尝试过谷歌搜索...所有示例看起来像这样。如果重要的话,我也在Visual Studios 2012中对此进行编码。我讨厌问这样的问题,但这使我无法继续。

固定:添加并行
#pragma omp parallel for private(buffer) reduction(+:result)

最佳答案

您在reduce子句中缺少“parallel”标记:

#pragma  omp for reduction(+:result) private(b)

应该
#pragma omp parallel for reduction(+:result) private(b)

关于c++ - 'reduction'子句中​​的Noob C++/OpenMP : Why do I get this compile time error?变量必须在封闭上下文中共享,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15455765/

10-11 18:00