[英]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.