我已经打开了winnt.h头文件并找到了这两行:
typedef wchar_t WCHAR;
和
typedef WCHAR TCHAR, *PTCHAR;
但是我的一个posts中有评论说它们之间存在一些差异。那有什么区别?
答案 0 :(得分:18)
如果你阅读整个标题,你会发现:
#ifdef _UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif
或者说是这样的话。
也许MS已经取消了最近的狭隘选择。
答案 1 :(得分:10)
TCHAR
可以是char
或WCHAR
。 WCHAR
始终是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':重新定义;不同的基本类型
所以通过分析这些东西,只有同一类型可以一起定义。