c – 使用typedef’dint导致错误,而“unsigned int”不会…?

c – 使用typedef’dint导致错误,而“unsigned int”不会…?,第1张

概述出于某种原因,当我在程序中将变量定义为“uint”而不是“unsigned int”时,它会出错.这看起来很奇怪,因为uint的typedef为: typedef unsigned int uint; ……所以我认为我可以互换地使用这两个.更确切地说,我正在分配一个函数的结果,该函数将“unsigned int”返回到一个uint变量中 在向量调整大小调用中使用该uint …此时它出错.即,我的代 出于某种原因,当我在程序中将变量定义为“uint”而不是“unsigned int”时,它会出错.这看起来很奇怪,因为uint的typedef为:
typedef unsigned int uint;

……所以我认为我可以互换地使用这两个.更确切地说,我正在分配一个函数的结果,该函数将“unsigned int”返回到一个uint变量中
在向量调整大小调用中使用该uint …此时它出错.即,我的代码看起来像这样:

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的include文件是/usr/include/sys/types.h.

解决方法 我的猜测是系统中还有另一个uint.尝试将您的内容重命名为不寻常的内容,甚至更好地将其包装在命名空间中.
namespace MY {    typedef unsigned int uint;}for (MY::uint i = 0; ....
总结

以上是内存溢出为你收集整理的c – 使用typedef’dint导致错误,而“unsigned int”不会…?全部内容,希望文章能够帮你解决c – 使用typedef’dint导致错误,而“unsigned int”不会…?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1239759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存