【问题标题】:What is difference between TCHAR and WCHAR?TCHAR 和 WCHAR 有什么区别?
【发布时间】:2010-11-17 15:13:42
【问题描述】:

我打开了 winnt.h 头文件,发现有这两行:

typedef wchar_t WCHAR;

typedef WCHAR TCHAR, *PTCHAR;

但在我的posts 之一中有评论说它们之间存在一些差异。那有什么区别呢?

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

    如果你阅读整个标题,你会发现:

    #ifdef _UNICODE
    typedef WCHAR TCHAR;
    #else
    typedef char TCHAR;
    #endif
    

    或类似的词。

    也许 MS 最近删除了窄选项。

    【讨论】:

      【解决方案2】:

      TCHAR 可以是charWCHAR,具体取决于平台。 WCHAR 始终是 16 位 Unicode 字符,wchar_t

      【讨论】:

        【解决方案3】:

        http://msdn.microsoft.com/en-us/library/aa383751%28VS.85%29.aspx

        TCHAR:

        如果定义了 UNICODE,则为 WCHAR,否则为 CHAR。

        WCHAR:

        一个 16 位 Unicode 字符。有关详细信息,请参阅字体使用的字符集。

        【讨论】:

          【解决方案4】:

          从技术上讲,没有区别,因为您不能将两个不同的实体类型定义为一个实体。让我们看一个例子......

          typedef char a;
          typedef char  b;
          typedef a b, c;
          

          此定义有效,但如果将上述定义更改为此

          typedef char a;
          typedef char * b;
          typedef a b, c;
          

          错误 1 ​​错误 C2040: 'b' : 'a' 与 'char *' 的间接级别不同

          另一个

          typedef char a;
          typedef int b;
          typedef a b, c;
          

          错误 1 ​​错误 C2371:'b':重新定义;不同的基本类型

          因此,通过分析这些事物,只有同一类型才能一起定义。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-02-12
            • 2014-12-21
            • 2010-10-02
            • 2011-12-12
            • 2010-09-16
            • 2012-03-14
            • 2012-02-06
            • 2011-02-25
            相关资源
            最近更新 更多