#if defined(UNICODE) && !defined(_UNICODE)
#define _UNICODE
#elif defined(_UNICODE) && !defined(UNICODE)
#define UNICODE
#endif
這是代碼塊上默認 win32 c 應用程式的標頭
uj5u.com熱心網友回復:
它確保兩者UNICODE和_UNICODE如果其中之一是則被定義。
uj5u.com熱心網友回復:
你認為它有什么作用?
它確保如果定義了 UNICODE 或 _UNICODE 前處理器符號中的任何一個,則同時定義了 UNICODE 和 _UNICODE。
這本身什么也沒做。
我們可以假設頭檔案中有一些地方包含不同版本的代碼,具體取決于是否定義了 UNICODE。最有可能定義使用 Unicode 字串或 ASCII 的函式。
因此,如果程式員想要使用 Unicode 字串,他會定義 UNICODE 并鏈接標準庫的 Unicode 版本,如果不是,他會留下未定義的 UNICODE 并鏈接 ASCII 版本。
但為什么是 UNICODE 和 _UNICODE?我們可以假設,在編譯器供應商發布使用 UNICODE 的版本后,有人認為讓供應商在全域命名空間中設定預編譯器符號是個壞主意。
所以供應商改為使用_UNICODE。但是因為他們有一些未知數量的客戶已經擁有使用 UNICODE 的代碼,并且他們不想破壞現有代碼,所以他們做了這個小技巧 - 如果定義了任何一個,則定義兩者。
期望在某個時候他們將停止支持 UNICODE,而僅支持 _UNICODE。
但我的猜測是這永遠不會發生。
uj5u.com熱心網友回復:
molbdnilo的擴展,
簡而言之,
UNICODE is used by Windows headers ,
然而
_UNICODE is used by C-runtime/MFC headers .
C-運行時是:
C 運行時庫 (CRT) 是包含 ISO C 標準庫的 C 標準庫的一部分。更多知識
MFC 標頭:
Microsoft 基礎類 (MFC) 庫為許多 Win32 和 COM API 提供了面向物件的包裝器。雖然它可用于創建非常簡單的桌面應用程式,但當您需要開發具有多個控制元件的更復雜的用戶界面時,它最有用
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430114.html
上一篇:帶有模板方法的頭檔案和代碼檔案的Arduino草圖。夾在“未定義的參考”和“重新定義”之間
下一篇:是否需要定義所有前向宣告?
