gpt4 book ai didi

c++ - 为什么不允许无符号 OpenMP 索引变量?

转载 作者:IT老高 更新时间:2023-10-28 21:52:56 59 4
gpt4 key购买 nike

我的 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这个错误的页面没有给我任何线索。

最佳答案

根据OpenMP 2.0 C/C++ API specification (pdf),第 2.4.1 节,这是 for 循环的限制之一。没有给出任何理由,但我怀疑这只是为了简化代码和编译器必须做出的假设,因为有特殊代码来确保范围不会溢出类型的最大值。

OpenMP 3.0 显然也允许使用无符号类型,但我还没有看到它的实际应用。

关于c++ - 为什么不允许无符号 OpenMP 索引变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2820621/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com