c++ - 使用 typedef'd uint 会导致错误,而 "unsigned int"不会...?

标签 c++ gcc typedef unsigned uint

出于某种原因,当我在我的程序中将变量定义为“uint”而不是“unsigned int”时,它会出错。这看起来很奇怪,因为 uint 被定义为:

typedef unsigned int uint;

...所以我认为我可以互换使用这两者。更确切地说,我将返回“unsigned int”的函数的结果分配给一个 uint 变量,然后 在 vector 调整大小调用中使用该 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 的包含文件是/usr/include/sys/types.h。

最佳答案

我的猜测是系统中还有另一个单位。尝试将您的名称重命名为不寻常的名称,或者更好地将其包装在 namespace 中。

namespace MY {
    typedef unsigned int uint;
}

for (MY::uint i = 0; ....

关于c++ - 使用 typedef'd uint 会导致错误,而 "unsigned int"不会...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8163262/

相关文章:

c++ - Xcode 8.3 命令行 C++

c++ - 为什么 C++ 编译器不能区分继承的公共(public)方法和继承的同名私有(private)方法?

c++ - 如何检查字符是否包含特定字母

gcc - GDB:关于回溯中文件的相对和绝对路径的问题

c++ - Typedef 更改行为导致错误和警告

c - 使用 typedef 定义

c++ - C++如何确定整数文字是否适合 int 类型?

c - Shadow-4.2.1 编译错误

python - 错误: command 'gcc' failed with exit status 1 while installing crf++

c++ - 结构和数组的初始值设定项太多