2010-04-28 70 views

回答

4

的WIN32 API必須與平臺無關,以及。當編譯器針對不同的字大小進行調整時,類型也可能會發生變化。

例如,在16位平臺:

typedef WORD unsigned int; 
typedef DWORD unsigned long; 

在32位平臺:

typedef WORD unsigned short; 
typedef DWORD unsigned int; 

這一個例子,你可能會有所不同。

9

Win32 API的需要是語言無關。 typedef綁定到x86處理器上的實際項目大小。因此,CHAR是char,DWORD是無符號long ......這些都是C和C++以外的語言即使使用不同的內存模型也可以「插入」API。

+0

要回答他的具體問題,除了對稱性之外沒有任何理由使用CHAR。 – 2010-04-28 17:18:39

+0

@Chris Lutz:還有語義上的差異。 CHAR是一個Windows API數據類型。 'char'是C和C++特定的項目。例如在.Net中,標準的char類型是16位寬。 – 2010-04-28 17:26:37

+0

@Chris Lutz:從理論上講,C++標準沒有要求'char'是8位寬。因此,如果微軟有朝一日會開始支持7位字節的平臺,他們的'CHAR'typedef將派上用場。 – jalf 2010-04-28 19:05:48