如果我这样做,它可以正常工作:
#pragma omp parallel for
for (int i = 1; i <= 200; i++) { ... }
这仍然可以正常使用
#pragma omp parallel for
for (unsigned long long i = 1; i <= 200; i++) { ... }
但这不起作用
#pragma omp parallel for
for (unsigned long long i = 1; i <= LLONG_MAX; i++) { ... }
- &GT;编译器错误:控制谓词无效
LLONG_MAX来自
#include <limits.h>
g ++ --version - &gt; g ++(tdm64-1)5.1.0
据说openmp 3.0可以处理无符号整数类型。
我搜索了很多这个问题,没有成功。它们都使用int作为迭代变量。 有人知道解决方案吗?
答案 0 :(得分:0)
我把程序改为:
unsigned long long n = ULLONG_MAX;
#pragma omp parallel for
for (unsigned long long i = 1; i < n; i++) { ... }
它似乎现在起作用了。谢谢杰夫的提示。
我之前尝试过:
for (auto i = 1; i < n; i++) { ... }
- &GT;没有错误,但循环没有产生输出,非常奇怪。