gpt4 book ai didi

c++ - 为 x64 平台编译时出现 c2593 错误(运算符标识符不明确)

转载 作者:行者123 更新时间:2023-11-30 04:40:38 24 4
gpt4 key购买 nike

我正在尝试使用 Microsoft VisualStudio 2008 编译一个 C++ 项目。如果您使用 Win32 作为目标平台,这个特定项目编译得很好。如果我尝试为 x64 平台编译同一个项目,我会得到一个 C2593 'operator identifier' is ambiguous。此行中的错误:

case 't':  os_ << (size_t)path->rnode->char_type;     break;

有人知道为什么同一行在 32 位上编译正常,但在 64 位上编译失败并出现如此高级别的错误吗?

最佳答案

好的,知道了。问题是 size_t 数据类型对于两个不同的平台具有不同的大小。运算符 << 是为各种数据类型列表定义的:

StringBuffer& operator<<(unsigned short int n) { _UITOA(n); }
StringBuffer& operator<<(unsigned int n) { _UITOA(n); }

在 32 位平台上,“unsigned int”与 size_t 完美匹配。在 64 位平台上,size_t 是 64 位并且与任何运算符声明都不完全匹配。

解决方案是通过使用正确的数据类型来选择准确的运算符:

case 't':  os_ << (unsigned int)path->rnode->char_type;     break;

或者使用 size_t 重载运算符:

StringBuffer& operator<<(size_t)       { _UITOA(n); }

关于c++ - 为 x64 平台编译时出现 c2593 错误(运算符标识符不明确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/939622/

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