gpt4 book ai didi

c++ - 如何区分 unsigned int 和 uint32_t

转载 作者:行者123 更新时间:2023-11-30 02:35:32 25 4
gpt4 key购买 nike

我需要找到除 uint32_t 以外的所有使用 size 的代码。我制作了我的自定义 SizeStub 类型,其中包含 uint32_t。并开始代码替换。为了避免在我已有 uint32_t 的代码上出现错误警报,我添加了下一个运算符:

template <typename T>
SizeStub& operator += (const T& in)
{
static_assert(std::is_same<T, decltype(_value)>::value, "NOT SAME");
this->_value += in;
return *this;
}

还有二元运算符等

一切都很好。除了 uin32_t 和 ... unsigned int 之外,我有所有类型的编译时警报。所以。如何区分非固定大小的unsigned int

海湾合作委员会版本 4.8.2

附言计划是在我将所有编译时警报修复到 uint32_t 时替换所有 SizeStub 用法。

最佳答案

uint32_t 是(afaik 始终)您编译平台上可用的无符号 32 位整数类型的 typedef。

在你的情况下 uint32_t 是通过 typedef unsigned int uint32_t;

定义的

所以 uint32_tunsigned int 是同一类型,只是使用了另一个名称。

编辑:在我完成之前意外提交...

您可能有一些实现目标的可能性:

  1. 您可以切换到 uint32_tunsigned int 类型不同的平台。这可能有效,但您需要小心。例如,如果您使用 MSVC 作为编译器,unsigned int 始终是 32 位无符号整数类型 - 无论针对 32 位还是 64 位进行编译。
  2. 您可以尝试将 uint32_t 重新定义为可以处理(赋值、强制转换...)unsigned int 类型值的独特类型。这会让你意识到不平等的情况......然而,在代码中找到正确的位置以重新定义 uint32_t 可能很复杂,因此你的编译器将在你希望它失败的所有情况下失败。
  3. 除了 2:您可以临时(!)更改原始类型定义。也许您想设置一个单独的构建环境来执行此操作,这样您的“真实”构建环境就不会受到它的影响。

也许有人可以想出更好的解决方案。

关于c++ - 如何区分 unsigned int 和 uint32_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33518285/

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