一千萬個為什麽

搜索

為什麽Win32-API有這麽多自定義類型?

我是Win32 API的新手,許多新類型開始讓我感到困惑。

一些函數將1-2 ints 和3 UINTS 作為參數。

  • 他們為什麽不能只使用整數?什麽是UINTS?

然後,還有其他類型:

DWORD LPCWSTR LPBOOL 
  • 同樣,我認為“原始”C類型就足夠了 - 為什麽要引入100種新類型?

This one was a pain: WCHAR*

我不得不叠代它並將每個字符push_back到std :: string,因為沒有其他方法可以將它轉換為一個。可怕。

  • 為什麽 WCHAR ?為什麽重新發明輪子?他們可能只是使用 char * ,或者?

最佳答案

Windows API最早是在20世紀80年代創建的,多年來不得不支持幾種不同的CPU架構和編譯器。他們已經從單用戶單進程獨立系統轉變為網絡化多用戶多核安全意識系統。他們不得不解決16位與32位處理器以及現在64位處理器的問題。他們必須解決ANSI C編譯器之前的問題。他們必須在早期非標準化時代支持C ++編譯器。他們不得不處理分段記憶。在Unicode存在之前,他們必須支持國際化。他們必須支持與MS-DOS,OS/2和Mac OS的源級兼容性。他們不得不運行幾代英特爾芯片,PowerPC,MIPS,Alpha和ARM。桌面,服務器,移動和嵌入式系統使用相同的基本API。

早在20世紀80年代,C被認為是一種高級語言(是的,真的!)並且許多人認為使用抽象類型而不僅僅是將所有內容都指定為原始 int ,< code> char ,或 void * 。當我們沒有IntelliSense和infotips以及代碼瀏覽器和在線文檔等時,這些使用提示很有幫助,並且它使得在不同編譯器和不同編程語言之間移植代碼變得更加容易。

是的,這是一個可怕的混亂,但這並不意味著他們做錯了什麽。

轉載註明原文: 為什麽Win32-API有這麽多自定義類型?