在vc7.1中, 如果一个变量定义在for语句的条件从句中,那么这个变量可以在for之后使用。但Vc8禁止这样,会报告一个C2065错误.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
在for语句之前声明变量(可保证代码在vc7.1和vc8下同时编译通过)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
2. 指针和引用的声明
在Vc7.1中, 下面的代码可以编译, 但是vc8会报C4430 错误。(很难想象有些美国程序员竟然这样声明)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
把* 或&放到类型的后面.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
3. 默认int类型
在vc7.1中,如果定义一个变量但不声明类型,那么默认为int。VC8不支持。
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
加上int.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
4. 函数的默认返回值类型
同上,VC8不支持把 int 作为默认返回值类
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
解决方法:
明确声明函数返回值类型为 int.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
5. 函数地址
Vc7中函数名就是地址。在vc8中,必须要使用&操作符同时写出这个方法的全名(fully qualified name).
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
解决方法:
加上 &.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
6. 隐式类型转换
VC8不允许B* 到const B*&的隐式转换.
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
解决方法:
强制转换或函数参数变成const B*。
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
7. 友元方法(Friend function)
VC8不允许声明一个private或protected函数为友元.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
解决方法 1:
声明友元类.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
解决方法 2:
把函数声明为public
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
8. STL的stdext 命名空间
在vc8中,hash_map 和hash_set 被移进了stdext命名空间中.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
使用stdext 命名空间.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
9. 头文件
许多头文件如fstream.h 和iostream.h在VC8中已经不存在了.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
使用STL.
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
10. Iterator
一些 STL 类, iterators 不再用指针实现
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
11. Enum
使用一个Enum的成员时,不要使用enum的名字
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/5138af2e7018e27227fd54d8914ff32e.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/869a6a9d503068d58e2e56787f3435be.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37f5b5abf5fd148bdad8dd05b70c0458.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/205c60cd8f239bf9118f0ac4fd1fe50b.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/4bdc8b0a6ae7c2e5144379c5b573c00c.gif)
解决方法:
去掉Enum 的名字.