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

查询编译器选项

编译器特性

时间: 2024-08-08 12:21:16

C/C++编译错误解决方案的相关文章

内核编译错误解决方案

1.error LNK2001: unresolved external symbol @[email protected]: 在vs解决方案中的配置属性下面的链接器->输入->附加依赖项 添加 bufferoverflowK.lib 用户态是bufferoverflowU.lib

Unity3d 导出 xcode 项目 编译错误解决方案

在XCode中的文件CMVideoSampling.mm 里添加: #include <OpenGLES/ES3/gl.h> #include <OpenGLES/ES3/glext.h> 同上,在文件GlesHelper.mm 中添加: #define GL_RGBA8_OES GL_RGBA8 #define glRenderbufferStorageMultisampleAPPLE glRenderbufferStorageMultisample #define GL_DEP

coreseek 在gcc 4.9+ 上编译不通过 [sphinxexpr.o] Error 1 错误解决方案

这几天玩hhvm,把gcc环境都装到4.9了,然后编译coreseek的时候就出问题,google一大圈,貌似捕风捉影看到一些信息说是gcc4.7+的c++作用域必须用this->去引用,这里整理一个补丁仅供大家参考coreseek 在gcc 4.7+ 上编译不通过 [sphinxexpr.o] Error 1 错误解决方案 错误如下:(每个人环境都不太一样,提示错误信息应该不尽相同但出错原因应该都是gcc4.7+以上版本作用域的问题) sphinxexpr.cpp:1047:43: note:

Ubuntu 12.04.1 OK335xS busybox-1.24.1 文件系统编译错误及解决方案

Ubuntu 12.04.1 OK335xS busybox-1.24.1 文件系统编译错误及解决方案 一.参考文档: 编译busybox的一些错误: http://blog.csdn.net/hshl1214/article/details/8668042 二.busybox 编译提示: ...... applets/usage_pod.c: In function ‘main’: applets/usage_pod.c:74:3: warning: format not a string l

(转:)Visual Studio 2012 编译错误【error C4996: &#39;scanf&#39;: This function or variable may be unsafe. 】的解决方案

在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 原因是Visual C++ 2012 使用了更加安

[转]Visual Studio 2012 编译错误【error C4996: &#39;scanf&#39;: This function or variable may be unsafe. 】的解决方案

原文地址:http://www.cnblogs.com/gb2013/archive/2013/03/05/SecurityEnhancementsInTheCRT.html 在VS 2012 中编译 C 语言项目,如果使用了 scanf 函数,编译时便会提示如下错误: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecat

Visual Studio 2012 编译错误【error C4996: &#39;scanf&#39;: This function or variable may be unsafe. 】的解决方案(转载)

转载:http://www.th7.cn/Program/c/201303/127343.shtml 原因是Visual C++ 2012 使用了更加安全的 run-time library routines .新的Security CRT functions(就是那些带有“_s”后缀的函数),请参见: <CRT函数的安全增强的版本> 下面给出这个问题的解决方案: 方法一:将原来的旧函数替换成新的 Security CRT functions. 方法二:用以下方法屏蔽这个警告: 1. 在预编译

Unsupported major.minor version 51.0 错误解决方案

Unsupported major.minor version 51.0 错误解决方案 栏目:Eclipse大师 作者:admin 日期:2015-04-08 评论:0 点击: 13,299 次 jdk1.6工程中使用外部jar包中类出现:Unsupported major.minor version 51.0原因分析:出现上述错误是因为:外部jar包使用jdk1.7(jdk7)编译,而使用此jar包的工程jdk版本为jdk1.6(jdk6),算是版本不支持. 解决方法见下面的步骤: 第一步:在

Android Studio上Session &#39;app&#39;: Error Installing APK错误解决方案

我在使用Android Studio的时候,使用自己的魅族(M5 Note)真机调试,运行不成功,提示下面图片中的错误(Session 'app':Error Installing APK). 再经过测试过好几种网上的方法之后,特记录如下,望以后大家少走弯路,希望可以帮助到大家. 可能不同的人使用到的方法都会是下面的不同的方法: 1)连接手机之后,会有显示手机的SDK型号以及API的版本,显示我自己的是魅族M5 Note(Android 6,API23),在我的手机上安装不上,刚开始有人说魅族手