【发布时间】:2012-06-19 19:26:45
【问题描述】:
UNICODE 和_UNICODE 有什么区别? 如果将程序编译为使用 unicode 字符,我们是否需要同时定义两者? 我们有 2 个不同的标识符来使用 unicode 字符是有原因的吗?
【问题讨论】:
UNICODE 和_UNICODE 有什么区别? 如果将程序编译为使用 unicode 字符,我们是否需要同时定义两者? 我们有 2 个不同的标识符来使用 unicode 字符是有原因的吗?
【问题讨论】:
Raymond Chen有答案:
不带下划线的普通版本会影响 Windows 头文件视为默认的字符集。因此,如果您定义 UNICODE,例如,GetWindowText 将映射到 GetWindowTextW 而不是 GetWindowTextA。同样,TEXT 宏将映射到 L"..." 而不是 "..."。
带有下划线的版本会影响 C 运行时头文件视为默认的字符集。因此,如果您定义 _UNICODE,则 _tcslen 将映射到 wcslen 而不是 strlen,例如。同样,_TEXT 宏将映射到 L"..." 而不是 "..."。
【讨论】:
UNICODE 是在定义 _UNICODE 时定义的,因此应该单独定义 _UNICODE 就足够了。
UNICODE 的情况下定义_UNICODE 时,它似乎就设置了UNICODE。