vc6迁移到VC8
来源:互联网 发布:usb网络共享无法上网 编辑:程序博客网 时间:2024/05/16 23:58
作为C++编译器,从vc6到vc8最大的调整就是对C++标准的支持更好了。
我发现的几点不同。
a. For 循环的声明
Vc6: for(int i<0;i<100;++i){}; j = i; (ok)
Vc8: for(int i<0;i<100;++i){}; j = i; (illegal)
int i; for(i<0;i<100;++i){}; j = i; (ok)
Vc8中的for循环中变量的有效期仅仅在for 循环的开始与结束期间有效。
b.string实现
Vc6: string s; char *p = s.begin(); (ok)
Vc8: string s; char *p = s.begin(); (illegal)
string s; char *p = const_cast<char *>(s.c_str()); (ok)
在vc6中,string::iterator被定义为char *,但是vc8中不是
c.更严格的typename声明的需要
Vc6:
template<class T>
class Test
{
public:
typedef map<T,T> mymap;
mymap::iterator mymap_iter;
}; (ok)
Vc8:
template<class T>
class Test
{
public:
typedef map<T,T> mymap;
mymap::iterator mymap_iter;
}; (illegal)
typename mymap::iterator mymap_iter;(ok)
vc8更加严格的要求程序员在类型前面加上typename以避免歧义
d.不允许默认的int类型
Vc6: fun() { return 0;} (ok)
Vc8: fun() { return 0;} (illegal)
int fun() { return 0;} (ok)
vc8不支持默认返回int类型
e.typedef必须是public才能被外界访问到
Vc6:
Class Test
{
typedef int iterator;
};
Test::iterator i; (ok)
Vc8:
Class Test
{
typedef int iterator;
};
Test::iterator i; (illegal)
Class Test
{
public:
typedef int iterator;
};
Test::iterator i; (ok)
- vc6迁移到VC8
- [转]从VC6到VC8的迁移
- vc6到vc8移植问题及处理
- vc6到vc8移植问题及处理
- 从VC6.0到VC8.0
- VC6工程转换到VC8(转载)
- 从VC6.0到VC8.0
- VC6.0代码移植到VC8.0问题
- vc7代码迁移到vc8的一些注意事项
- SDL游戏开发教程09(代码迁移到VC8)
- 从Vc6迁移到Vs2005
- VC6到VS2010平台迁移
- vc6->vc8 error c2440
- 再谈从vc6迁移到vs2005
- 再谈从vc6迁移到vs2005
- VC6.0到VS2008迁移排错
- VC6.0迁移到VS2005:error C2440
- VC6.0迁移到VS2005:error C2440
- 易经给我们的64个人生智慧
- 在vb中添加网页超链接(源码)'创建一个Label以下为Label的源代码:
- 100以内的心算法
- c# word输出
- (十七)是机会还是烫手山芋 - 2
- vc6迁移到VC8
- 在C++中实现foreach循环
- 2010-1-10渥瑞达严欣老师正式创建技术博客
- kern-exec 0 问题
- fatal error LNK1103: debugging information corrupt; recompile module
- 关键字 NEW
- [转]某个日期是在一年中的第几周——被遗忘的GregorianCalendar类
- (十七)是机会还是烫手山芋 - 3
- 十本大师力荐的计算机图书