由于某些原因,当我在程序中将变量定义为“uint”而不是“unsigned int”时,它会出错。这看起来很奇怪,因为uint是typedef'd:使用typedef'd uint会导致错误,而“unsigned int”不会...?
typedef unsigned int uint;
...所以我想我可以使用这两个可以互换。更确切地说,我将一个返回“unsigned int”的函数的结果赋值给一个uint变量,然后使用该uint在一个向量resize调用中调用......在这一点上它的错误。也就是说,我的代码看起来像这样:
unsigned int getUInt()
{
return 3;
}
int main(void) {
vector<vector<float> > vectVect(100000);
for(uint i = 0; i < vectVect.size(); ++i)
{
vector<float>& myVect = vectVect[i];
uint myUnsignedInt = getUInt();
myVect.resize(myUnsignedInt);
}
cout << "finished" << endl;
}
...而它错误的行是myVect.resize行。
显然,我已经有了一个解决方案,但我想知道为什么会发生这种情况,因为我很困惑。有人有主意吗?
PS - 如果有人认为它可能很重要,我在Fedora 15上使用gcc v4.1.2 ...并且定义uint的包含文件是/usr/include/sys/types.h。
无论何时出现错误,您总是需要在问题中包含有问题的错误。 –
你应该显示失败的真实代码。特别是'#include'-s,'using'声明等。而GCC 4.6可能比4.1更符合标准。 –
[正如你在这里看到的](http://ideone.com/Y1DRP),在你提供的例子中(至少在那个版本的gcc中),这个错误不会发生。 –