我在我的C++/OpenMP代码中有一个循环,看起来像这样:
#pragma omp parallel for
for(unsigned int i=0; i<count; i++)
{
// do stuff
}
当我编译它时(使用Visual Studio 2005),我会得到以下错误:
error C3016: 'i':OpenMP“for”语句中的索引变量必须具有带符号整数类型
我明白这个错误是因为 i
是无符号的,而不是有符号的,将 i
更改为有符号的解决了这个错误。我想知道的是为什么会出现这种错误?为什么不允许使用无符号索引变量?查看此错误的MSDN页面没有给我任何线索。
cl.exe
仍然只支持通过/openmp
来实现 OpenMP 2.0,除非选择/openmp:llvm
,但是根据 Microsoft 的说法,这种方式仅支持 x64 目标和无符号循环索引,例如 OpenMP 3.0。有点不幸... GCC/Clang 要领先得多。 - phetdam