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/