如上图中,在这里,WIN32、_DEBUGE、_UNICODE等其实是一些宏定义,在这里写上这些,相当于在本工程所有的文件中都写上了:
#define WIN32 #define _DEBUG
#define _UNICODE
这样,就可以达到一个多一个同一个代码在不同的配置环境在编译的结果文件不一样,从而实现跨平台。比如,在VC中,因为要有的环境是UNICODE,有些则不是,同一份代码为了在两种环境下都可以用,那么就会有以下宏定义(其实这就是twhar.h中的代码):
#ifdef _UNICODE typedef wchar_t TCHAR; #define __T(x) L##x #define _T(x) __T(x) #else #define __T(x) x typedef char TCHAR; #endif
那么,当你的环境中写了UNICODE时,这一段就会编译:
#define __T(x) L##x #define _T(x) __T(x)
如果没有写UNICODE,那么上面这段就不编译,而是下面这段被编译:
#define __T(x) x
这样,只要你的字符串用了_T("somechar"),那么,在有UNICODE的时候,就是L"somechar";在没有UNICODE在时候,就是它本身"somechar"了。
可以参考下这个:http://blog.csdn.net/xiliang_pan/article/details/7081395