VS2010中屬性頁中,C/C++ -->預處理器定義
標簽:img c/c++ 實現 win32 sdn else 就會 ifdef mage

如上圖中,在這里,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
標簽:img c/c++ 實現 win32 sdn else 就會 ifdef mage
原文:http://www.cnblogs.com/JMLiu/p/6241427.html
