1._T("Hello")是一个宏,作用是让程序支持Unicode编码。
2.windows使用两种字符集ANSI和UNICODE,前者使用的单字节格式,后者使用双字节格式。
3.简单一点讲:
_T("hello world")表示:
在ansi的环境下,它是ansi的;
在unicode下,那么它将自动解释为双字节字符串,既unicode编码。
好处:不管是ansi环境,还是unicode环境,都适用。
4.
相当于:
#ifdef _UNICODE
#define _T("ABC") L"ABC" //每个字符16位
#else
#define _T("ABC") "ABC" //每个字符8位
#endif
5.举例说明:
(1)#define Conn(x,y) x##y //表示:x连接y;
int n = Conn(123,456); // 结果就是n=123456;
char* str = Conn("asdf", "adf") //结果就是 str = "asdfadf";
char* str = Conn("asdf", "adf") //结果就是 str = "asdfadf";
(2)#define ToChar(x) #@x //表示:给x加上'',结果返回是一个const char
char a = ToChar(1); //结果就是a='1';
越界试验char a = ToChar(123); //结果是a='3';
如果你的参数超过四个字符,编译器就报错!error C2015: too many characters in constant :P
越界试验char a = ToChar(123); //结果是a='3';
如果你的参数超过四个字符,编译器就报错!error C2015: too many characters in constant :P
(3)#define ToString(x) #x //表示:给x加上""
char* str = ToString(123132); //就成了str="123132";
本文转自 韬光星夜 51CTO博客,原文链接:http://blog.51cto.com/xfqxj/498197,如需转载请自行联系原作者