經過宏判斷VS編譯版本以及系統平臺

_MSC_VER 定義編譯器的版本。下面是一些編譯器版本的_MSC_VER值(參見擴展閱讀中的參考文獻2的連接)ui

MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013) 
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012) 
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010) 
MSVC++ 9.0  _MSC_VER == 1500 (Visual Studio 2008) 
MSVC++ 8.0  _MSC_VER == 1400 (Visual Studio 2005) 
MSVC++ 7.1  _MSC_VER == 1310 (Visual Studio 2003) 
MSVC++ 7.0  _MSC_VER == 1300 
MSVC++ 6.0  _MSC_VER == 1200 
MSVC++ 5.0  _MSC_VER == 1100orm

//****************************************************************************** 
// Automated platform detection 
//******************************************************************************ci

// _WIN32 is used by 
// Visual C++ 
#ifdef _WIN32 
#define __NT__ 
#endif開發

// Define __MAC__ platform indicator 
#ifdef macintosh 
#define __MAC__ 
#endif編譯器

// Define __OSX__ platform indicator 
#ifdef __APPLE__ 
#define __OSX__ 
#endifio

// Define __WIN16__ platform indicator 
#ifdef _Windows_ 
#ifndef __NT__ 
#define __WIN16__ 
#endif 
#endif編譯

// Define Windows CE platform indicator 
#ifdef WIN32_PLATFORM_HPCPRO 
#define __WINCE__ 
#endifform

#if (_WIN32_WCE == 300) // for Pocket PC 
#define __POCKETPC__ 
#define __WINCE__ 
//#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern) 
//#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon)  
//#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo) 
#endifimport

example2:gui

#if (_MSC_VER == 1300)  //vc7

#import "acax16ENU.tlb" no_implementation raw_interfaces_only named_guids

#elif (_MSC_VER == 1200)  //vc6

#import "acad.tlb" no_implementation raw_interfaces_only named_guids

#elif (_MSC_VER == 1400) //vc8

#import "acax17ENU.tlb" no_implementation raw_interfaces_only named_guids

#elif (_MSC_VER == 1500) //vc9

#import "acax18ENU.tlb" no_implementation raw_interfaces_only named_guids

#endif

    在程序中加入_MSC_VER宏能夠根據編譯器版本讓編譯器選擇性地編譯一段程序。例如一個版本編譯器產生的lib文件可能不能被另外一個版本的編譯器調用,那麼在開發應用程序的時候,在該程序的lib調用庫中放入多個版本編譯器產生的lib文件。在程序中加入_MSC_VER宏,編譯器就可以在調用的時根據其版本自動選擇能夠連接的lib庫版本,以下所示。  #if _MSC_VER >= 1400 // for vc8, or vc9  #ifdef _DEBUG  #pragma comment( lib, "SomeLib-vc8-d.lib" )  #else if  #pragma comment( lib, "SomeLib-vc8-r.lib" )  #endif  #else if _MSC_VER >= 1310 // for vc71  #ifdef _DEBUG  #pragma comment( lib, "SomeLib-vc71-d.lib" )  #else if  #pragma comment( lib, "SomeLib-vc71-r.lib" )  #endif  #else if _MSC_VER >=1200 // for vc6  #ifdef _DEBUG  #pragma comment( lib, "SomeLib-vc6-d.lib" )  #else if  #pragma comment( lib, "SomeLib-vc6-r.lib" )  #endif  #endif

相關文章
相關標籤/搜索