TCHAR和WCHAR有什么区别?

时间:2010-11-17 15:13:43

标签: c++ winapi

我已经打开了winnt.h头文件并找到了这两行:

typedef wchar_t WCHAR;

typedef WCHAR TCHAR, *PTCHAR;

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

4 个答案:

答案 0 :(得分:18)

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

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

或者说是这样的话。

也许MS已经取消了最近的狭隘选择。

答案 1 :(得分:10)

根据平台,

TCHAR可以是charWCHARWCHAR始终是16位Unicode字符wchar_t

答案 2 :(得分:7)

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

TCHAR:

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

WCHAR:

16位Unicode字符。有关更多信息,请参阅字体使用的字符集。

答案 3 :(得分:0)

从技术上讲,没有区别,因为你不能将两个不同的实体键入到一个实体中。让我们看一个例子......

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':重新定义;不同的基本类型

所以通过分析这些东西,只有同一类型可以一起定义。