VC6和VS2008中C++编译器差异

摘要:
1.在for中定义的变量作用域对于{}对于{}是不同的。上述代码可以在VS2008中编译;VC6.0中将提示“i':重新定义”的编译错误。

1. for中定义变量作用域不同

for (int i=0; i<100; i++){}
for (int i=100; i<200; i++){}

以上代码在VS2008中可编译通过;在VC6.0下会提示" 'i' : redefinition "的编译错误。

2. static const变量能否在头文件中初始化

class A
{
public:
	static const int m_MAXNUM = 10;
};

以上代码在VS2008中可编译通过;在VC6.0下会提示出两个令人费解的编译错误。

error C2258: illegal pure syntax, must be '= 0'

error C2252: 'm_MAXNUM' : pure specifier can only be specified for functions

将代码修改为以下即可通过编译

//a.h
class A
{
public:
	static const int m_MAXNUM;
};
// a.cpp
const int A::m_MAXNUM = 10;

这些差异是我们需要在移植代码时考虑的,紧记!

免责声明:文章转载自《VC6和VS2008中C++编译器差异》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos 6.3安装 问题总结Asp.net2.0 VS 2005下的repeater控件本功能分页实例(共有 条记录 共有几页 当前第 页 首页,上一页,下一页,尾页 DropDownList跳转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vc6中向vs2010迁移的几个问题

vc6版本支持的库编译:CJ60lib 1. 用vs2010打开CJ60库的源码的dsw,强制打开 (1)设置项目属性的语言 因为,如果代码字符的编码集不一样,则会出现函数冲定义,参数冲突等问题,这可以通过修改项目属性可以修改。 因为VS2010默认示宽字符,所以,编译要从VC6(默认窄字符),要修改项目属性为不使用宽字符。 2. 编译:项目,方式如下:...

VS2008试用版到期解决办法

问题: 在Windows 7下,VS2008试用版无法正常升级到正式版。原因是维护页面的注册码输入框和升级按钮被隐藏。 解决方案: 通过本补丁,可让注册码输入框和升级按钮恢复正常显示。点击此处下载补丁 1、在“添加或删除应用程序”,找到"Microsoft Visual Studio Team System 2008 Team Suite - 简体中文"这...

VC add files to folder失效问题

VC—>add files to folder失效,郁闷了很久,最后网上一搜,都说的office2007惹的祸。抱着试一试的心理,卸载了刚刚装上没多久,才用习惯的office2007,重启后发现又好使了! 其实office2007还是很好用的,可惜了啊! 卸了之后再到网上查,发现还有解决冲突的办法: 不知从什么时候开始,VC6.0不听话了,open-...

【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中

本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/这是本人第一次使用MarkDown编辑器,试试看效果—w—,下面是正文: ## 一、报错原因 昨天用SIMD指令编写了几个矩阵计算函数,想要替换掉DX的函数达到优化性能的目的。 因为公司项目使用的编译器是VS2008,而VS2013编译出来的SI...

VC6使用Crypto++库执行对称加密运算时异常报错的解决办法

使用Crypto++库时运行VC6编译出来的程序,在运行到对称密码算法时会出现异常报错。 使用对称密码算法时,参考的代码是Crypto++ Wiki的代码,下载页面:http://www.cryptopp.com/wiki/Hash_Functions,在页面最下面有Sample Programs,里面执行密码运行时是这条语句: // Encryption...

vs2008下C++开发问题汇总

让控制台程序后台运行 【转】C++ 让 Win32 Console Application 程序后台运行 方法一:(无闪现) 添加   #pragma comment( linker, "/subsystem:"windows" /entry:"mainCRTStartup"" ) 方法二:(这个会有闪现) #include "windows.h"...