在通過一些源代碼時,我發現了一個C程序中的方法,它接受了WORD,DWORD和PWORD類型的參數。我知道他們翻譯成無符號數字,但他們爲什麼叫WORD?在Windows API中,C中的WORD類型是什麼?
回答
字大小和數據類型
字是數據的一臺機器可以同時處理的量。這適合包含字符(通常爲8位)和頁面(多個字,通常爲4或8KB的值)作爲其他數據測量的文檔類比。一個字是整數個字節,例如一個,兩個,四個或八個字節。當有人談論機器的「n位」時,他們通常會談論機器的字大小。例如,當人們說Pentium是32位芯片時,他們指的是其字長,即32位或4個字節。
處理器的通用寄存器(GPR)的大小等於其字大小。例如,給定體系結構中的組件寬度,內存總線通常至少與字大小一樣寬。通常,至少在Linux支持的體系結構中,內存地址空間等於字大小[2]。因此,指針的大小等於字大小。此外,C型long的大小等於字大小,而int型的大小有時小於字大小。例如,Alpha有64位字長。因此,寄存器,指針和長類型的長度都是64位。然而,int類型的長度是32位。 Alpha可以訪問和操作64位,一次一個字。
看起來在彙編中,「字」通常是2個字節。在我看來,另一個可操作的東西是,在GDB中,命令爲'x','w'表示4個字節,'h'表示2個字節。它似乎不統一。 –
WORD
表示2個字節。
它最初用於指代指針大小(如在字長爲16位的CPU中)。
在Windows 3.1(僅支持16位機器)中(以及之前),Windows API在typedefs
中使用它,所以含義不能再改變。
WORD是probalby從一些舊的代碼和通常意味着16位,而DWORD通常意味着32位。如果你不確定你應該檢查你的代碼,因爲它們必須在某個地方定義。
WORD源於機器字,其大小取決於硬件。
- 1. C++中「abc」的類型是什麼?
- 2. 什麼是C中的複合類型?
- 3. 什麼是C#中的可空類型?
- 4. 什麼是C#中的可空類型?
- 5. C#中「half」(binary16)的類型是什麼?
- 6. c中的強類型是什麼?
- 7. 什麼是C#中的匿名類型?
- 8. 什麼是C++中的char()類型?
- 9. 什麼是「int?」在C#類型中
- 10. 什麼`... |類型聲明中的b - > c是什麼意思?
- 11. C:&array_name的類型是什麼?
- 12. WINOLEAPI的C#數據類型是什麼?
- 13. 什麼是Objective-C的枚舉類型
- 14. 什麼是?類型?
- 15. 什麼是C 「類型名稱」 ++
- 16. 什麼是kdb + capital C類型?
- 17. C# - 什麼對象類型是FormData
- 18. C#。什麼類型必須是可變
- 19. C++中的布爾型數據類型是什麼
- 20. 什麼是C#long類型的等效SQL Server類型?
- 21. 什麼是類型和什麼是類型構造函數scala
- 22. DataGridAutoGeneratingColumnEventArgs.PropertyDescriptor是什麼類型的?
- 23. LetterP的類型是什麼?
- 24. 什麼是setContentView()的類型
- 25. 什麼是MouseEventArgs.X的類型?
- 26. T的類型是什麼?
- 27. C#需要什麼類型?
- 28. 在c#中的類型推斷的目的是什麼
- 29. 爲什麼C#中匿名類型的屬性是隻讀的?
- 30. 什麼是語法的變量類型:Objective-C中的'somestring'?
我只想補充一點,當爲Windows開發時,你可以找到類型的定義[在這個MSDN文檔](http://msdn.microsoft.com/en-us/library/windows/desktop /aa383751(v=vs.85).aspx)。請注意,'WORD'不再是最近CPU的機器字的實際大小,而是爲了兼容性而保持在16位。 – Dirk
@Dirk我發佈這個問題後不久在源代碼中發現了這個。它位於名爲WinDef.h的頭文件中。包含這些類型的所有類型定義。謝謝。 – Nealon