[英]What is Compatible “int” type in both 32Bit & 64Bit windows in C++?
C ++中兼容的“int”數據類型是什么,它可以在32位上調整為4個字節,在64位窗口上調整為8個字節?
雖然INT_PTR工作正常,但它降低了可讀性,並且它的描述告訴我們將它用於指針算術。
謝謝
如果你正在尋找標准的東西,那你就不走運了。 該標准未指定任何內置數據類型的大小。
注意, INT_PTR
並不意味着指針算術。 我的意思是該類型將具有與void *
相同的大小,這正是您想要的。 它不適用於所有平台(我很確定它是Windows特定的)。
該標准沒有提到具體的尺寸要求,只是每個整體類型必須提供至少與之前類型相同的存儲量。 所以int
必須保持short
,等等。 你最好指定一下你需要它們。
如果您正在尋找不會根據操作環境更改大小的整數,請查看Boost Integer Library或C99 / C ++ 11標頭<cstdint>
。 它包含諸如uint32_t
/ int32_t
和uintmax_t
/ intmax_t
類的類型。
最重要的是,根據您的問題,它有: uintptr_t
/ intptr_t
。 保證它們具有正確的大小,以便在您的平台上保持指針。
在Visual Studio下,您還可以獲得__int3264,其功能與INT_PTR相同...
這真的取決於編譯器。 我認為唯一(或多或少)可靠的方法是使用像(void *)這樣的指針類型。
我認為最好的方法是在頭文件中使用一些條件處理並設置自定義類型:
#ifdef _WIN64
typedef __int64 NATIVEINT;
#else
typedef __int32 NATIVEINT;
#endif
(此示例適用於Visual C ++)
這可能對您有所幫助: http : //lists.debian.org/debian-user/2006/04/msg00681.html 。 不幸的是,你的問題似乎依賴於編譯器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.