我在尋找一個數據類型(它將被用作索引),它應該是32位os中的16位和64位操作系統中的32位。我使用VS2010,並且我知道可以使用HALF_PTR,但在用於索引時聽起來不太好,我仍然可以將它定義爲更有意義的名稱,但在此之前,有任何已定義的數據類型可用於這個目的?什麼數據類型是32位操作系統中的16位和64位操作系統中的32位?
-1
A
回答
5
您可以使用特徵做出適合您的系統類型別名:
#include <cstdint>
template <unsigned int> struct HalfPtrImpl;
template <> struct HalfPtrImpl<4> { typedef uint16_t type; };
template <> struct HalfPtrImpl<8> { typedef uint32_t type; };
typedef HalfPtrImpl<sizeof(uintptr_t)>::type HalfPtr;
現在使用HalfPtr
爲你的類型。
(您可以通過使用std::conditional
幾次方法很多快捷方式上面。皮膚這隻貓。)
+0
32 ** byte **整數?這是一個非常寬的數據通路! –
+0
@BenVoigt:誰在哪裏? :-) –
相關問題
- 1. 32位/ 64位操作系統?
- 2. Windows 64位操作系統上的32位或64位Android SDK?
- 3. 確定從32位操作系統或64位操作系統C/C++應用
- 4. 對32位系統中的64位字進行操作
- 5. 如何檢測Flex中的32位或64位操作系統?
- 6. 對32位和64位操作系統的不同計算
- 7. 關於64位和32位的Mac操作系統
- 8. 32位和64位操作系統上的Java版本
- 9. 32位體系結構中的64位操作數的操作?
- 10. 在32位操作系統中使用64位dll
- 11. 在32位操作系統和64位操作系統之間,類java.net.InetAddress有什麼區別
- 12. 使用arm v8運行32位和64位操作系統
- 13. 邏輯地址空間在64位和32位操作系統
- 14. 32位OpenCL SDK和64位操作系統錯誤
- 15. 64位操作系統上的32位ActiveX DLL的問題
- 16. 32位應用程序的64位操作系統
- 17. VM Virtual Box 64位硬件上的32位操作系統
- 18. 在64位架構上的32位操作系統
- 19. 安裝在64位操作系統上的Windows 32位Eclipse?
- 20. 64位操作系統上的32位VC++可再發行?
- 21. 32位操作系統上的Apache Hive
- 22. 32位操作系統上的2^32位或字節
- 23. JNA在64位操作系統上具有32位JVM
- 24. 在64位操作系統上調試32位CASSINI(Oracle 9)
- 25. 開在64位操作系統32位Visual C#項目
- 26. 在64位服務器上加載32位dll操作系統
- 27. 32位dll 64位操作系統與regsvr32.exe
- 28. Environment.GetEnvironmentVariable檢查操作系統版本32位/ 64位
- 29. 在64位操作系統上啓動32位進程
- 30. 在32位操作系統上運行64位jvm
C和C++沒有在這方面做出任何承諾,所以你必須要讀你的編譯器的文檔。 –
當他們不解釋爲什麼需要這樣一個奇怪的動物時,這些問題很難理解。如果SO用戶名以「新手」開頭,則會額外增加黑客行爲。使用* short *以32位代碼索引數組不是優化。離得很遠。 –
@Hans Passant,它用於在二進制blob頭文件中寫入一個字段。這個特定的字段應該是32位OS中的16位和64位OS中的32位。它不被用作空間優化的數組索引。 – Coder777