由於某些原因,當我在程序中將變量定義爲「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中),這個錯誤不會發生。 –