[轉]VS2010中屬性頁中,C/C++ -->預處理器定義


VS2010中屬性頁中,C/C++ -->預處理器定義

時間: 2017-01-01 20:40:42      閱讀:117      評論:0      收藏:0      [點我收藏+]

標簽: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

VS2010中屬性頁中,C/C++ -->預處理器定義

標簽:img   c/c++   實現   win32   sdn   else   就會   ifdef   mage   

原文:http://www.cnblogs.com/JMLiu/p/6241427.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM