通过宏判断VS编译版本以及系统平台
2015-09-19 11:20
369 查看
MSC_VER 定义编译器的版本。下面是一些编译器版本的_MSC_VER值(参见扩展阅读中的参考文献2的链接)
example2:
在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。例如一个 版本编译器产生的lib文件可能不能被另一个版本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文 件。在程序中加入_MSC_VER宏,编译器就能够在调用的时根据其版本自动选择可以链接的lib库版本,如下所示。
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 == 1100
//****************************************************************************** // Automated platform detection //****************************************************************************** // _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__ #endif // Define __WIN16__ platform indicator #ifdef _Windows_ #ifndef __NT__ #define __WIN16__ #endif #endif // Define Windows CE platform indicator #ifdef WIN32_PLATFORM_HPCPRO #define __WINCE__ #endif #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) #endif
example2:
#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
相关文章推荐
- linux下软件安装的方法
- Android电话拨号器实现方法
- 行为模式:观察者模式
- 返回键捕获 应用程序退出的两种方式(转)
- 《TCP/IP详解卷1:协议》——第6章 ICMP:Internet控制报文协议(转载)
- 数据结构(二):哈夫曼树
- Android服务器主动推送之百度云推送
- Android学习系列(二): 保存文件到手机内存-模拟用户登录保存用户信息
- PHP数据存储与检索
- Linux Shell
- GitHub基础学习—简单分支处理
- hdu 5037 Frog(贪心)
- 反复校验用户输入的日期,直到年、月、日都合法,计算该日在本年中为第几天?(注意考虑闰年问题)
- Android 自定义View修炼-打造完美的自定义侧滑菜单/侧滑View控件
- JAVA 遍历Map的四种方法
- 9.17学习笔记 java和python交互,java8位UUID,mac闪电接口高清线导购
- Codeforces Round #306 (Div. 2) D-E
- 方便的任意处使用UI线程的工具类分享
- socket非阻塞connect
- C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化