我的C++/OpenMP代码中有一个循环,如下所示:
#pragma omp parallel for
for(unsigned int i=0; i<count; i++)
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
当我编译它(使用Visual Studio 2005)时,我收到以下错误:
error C3016: 'i' : index variable in OpenMP 'for' statement must have signed integral type
我知道发生错误的原因i是因为是无符号而不是签名,而更改i为签名会删除此错误.我想知道的是为什么这是一个错误?为什么不允许使用无符号索引变量?查看此错误的MSDN页面没有提供任何线索.
Hea*_*eek 14
根据OpenMP 2.0 C/C++ API规范(pdf),第2.4.1节,这是for循环的限制之一.没有理由给它,但我怀疑它只是为了简化代码和编译器必须做出的假设,因为有特殊的代码来确保范围不会超出类型的最大值.
OpenMP 3.0显然也允许使用无符号类型,但我还没有看到它的实际应用.
| 归档时间: |
|
| 查看次数: |
4172 次 |
| 最近记录: |