[英]How to distinguish unsigned int from uint32_t
我需要找到所有使用uint32_t
以外的size
代码。 我用自己的uint32_t
制作了自定义的SizeStub
类型。 并开始代码替换。 为了避免我已经拥有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
哪个不是固定大小?
gcc版本4.8.2
PS当我将所有编译时警报修复到uint32_t
时,计划是替换所有SizeStub
使用。
uint32_t
是(afaik always)您编译的平台上可用的无符号32位整数类型的typedef。
在你的情况下, uint32_t
是通过typedef unsigned int uint32_t;
定义的typedef unsigned int uint32_t;
因此uint32_t
与unsigned int
类型相同,只是使用其他名称。
编辑:在我完成之前意外提交...
您可能有一些实现目标的可能性:
uint32_t
与unsigned int
类型不同的平台。 这可能有用,但你需要小心。 例如,如果您使用MSVC作为编译器, unsigned int
始终是32位无符号整数类型 - 无论是针对32位还是64位进行编译。 uint32_t
重新定义为可以处理(赋值,强制转换,...) unsigned int
类型的值的不同类型。 这会让你意识到不可靠的情况......然而,在代码中找到正确的位置以重新定义uint32_t
可能很复杂,因此编译器将在你希望它失败的所有情况下失败。 也许有人可以提出更好的解决方案。
如果unsigned int
是32位,那么它和uint32_t
是相同的类型 。 你不能区分一种类型。
由于uint32_t
只是一个类型别名,因此与typedef xy
,你无法区分x
和y
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.