我需要找到除size
之外所有用作uint32_t
的代码。
我已经在里面添加了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
?gcc版本4.8.2
附言当我将所有编译时间警报修复到
SizeStub
时,该计划是替换所有uint32_t
的用法。 最佳答案
uint32_t
(始终是afaik)是您要为其编译的平台上可用的32位无符号整数类型的typedef。
在您的情况下,通过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
可能会很复杂,因此您的编译器将在所有您希望失败的情况下失败。 也许有人可以提出更好的解决方案。
关于c++ - 如何区分unsigned int和uint32_t,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33518285/