【问题标题】:Difference between UNICODE and _UNICODE [duplicate]UNICODE 和 _UNICODE 之间的区别 [重复]
【发布时间】:2012-06-19 19:26:45
【问题描述】:

可能重复:
Why both UNICODE and _UNICODE?

UNICODE 和_UNICODE 有什么区别? 如果将程序编译为使用 unicode 字符,我们是否需要同时定义两者? 我们有 2 个不同的标识符来使用 unicode 字符是有原因的吗?

【问题讨论】:

    标签: c winapi unicode


    【解决方案1】:

    Raymond Chen有答案:

    不带下划线的普通版本会影响 Windows 头文件视为默认的字符集。因此,如果您定义 UNICODE,例如,GetWindowText 将映射到 GetWindowTextW 而不是 GetWindowTextA。同样,TEXT 宏将映射到 L"..." 而不是 "..."。

    带有下划线的版本会影响 C 运行时头文件视为默认的字符集。因此,如果您定义 _UNICODE,则 _tcslen 将映射到 wcslen 而不是 strlen,例如。同样,_TEXT 宏将映射到 L"..." 而不是 "..."。

    【讨论】:

    • ...您通常在项目中既不定义,也不定义两者。
    • 虽然正确,但查看其他问题的答案表明 UNICODE 是在定义 _UNICODE 时定义的,因此应该单独定义 _UNICODE 就足够了。
    • @Joey - 嗯,不完全是。如果只定义了_UNICODE,则TCHAR被定义为char(而不是WCHAR)
    • 那么我可能误解了发布在in that answer 上的代码 sn-p,只要在没有UNICODE 的情况下定义_UNICODE 时,它似乎就设置了UNICODE
    • 该代码 sn-p 可能出现在 Windows.h 或 TCHAR.h 未包含的某些头文件中。这似乎是我唯一合乎逻辑的解释。
    猜你喜欢
    • 2014-08-16
    • 2011-04-08
    • 2012-11-24
    • 2013-06-05
    • 2021-09-29
    • 2020-05-27
    • 2016-03-23
    • 2012-08-11
    • 2012-11-24
    相关资源
    最近更新 更多