首页 > 代码库 > C/C++编译错误解决方案

C/C++编译错误解决方案

编译首先确定编译器版本

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 (Visual Studio 2002) 
MSVC++ 6.0 _MSC_VER = 1200  
MSVC++ 5.0 _MSC_VER = 1100

查询编译器版本所支持的标准

Wiki:目前最新的C++标准是ISO/IEC 14882:2017

发布时间 文档 简称 备注
2017 ISO/IEC C++17  
2014 ISO/IEC 14882:2014 C++14 第四个c++标准
2011 ISO/IEC 14882:2011 C++11 第三个c++标准
2007 ISO/IEC TR 19768:2007 C++ TR1 C++技术报告:库扩展
2006 ISO/IEC TR 18015:2006   C++性能技术报告
2003 ISO/IEC 14882:2003 C++03 第二个c++标准
1998 ISO/IEC 14882:1998 C++98 第一个C++标准

 

 

 

 

 

 

程序中如何确定编译器版本:

_MSC_VER

在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择性地编译一段程序。例如一个版本编译器产生的lib文件可能不能被另一个版

本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文件。在程序中加入_MSC_VER宏

,编译器就能够在调用的时根据其版本自动选择可以链接的lib库版本,如下所示。

 1 #if _MSC_VER >= 1400 // for vc8, or vc9
 2 #ifdef _DEBUG
 3 #pragma comment( lib, "SomeLib-vc8-d.lib" )
 4 #else if
 5 #pragma comment( lib, "SomeLib-vc8-r.lib" )
 6 #endif
 7 #else if _MSC_VER >= 1310 // for vc71
 8 #ifdef _DEBUG
 9 #pragma comment( lib, "SomeLib-vc71-d.lib" )
10 #else if
11 #pragma comment( lib, "SomeLib-vc71-r.lib" )
12 #endif
13 #else if _MSC_VER >=1200 // for vc6
14 #ifdef _DEBUG
15 #pragma comment( lib, "SomeLib-vc6-d.lib" )
16 #else if
17 #pragma comment( lib, "SomeLib-vc6-r.lib" )
18 #endif
19 #endif
example:
#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

查询编译器选项

编译器特性

C/C++编译错误解决方案