vc++7.1轉移到vc++2005 需要的一些變動
在vc7.1中, 如果一個變量定義在for語句的條件從句中,那么這個變量可以在for之后使用。但Vc8禁止這樣,會報告一個C2065錯誤.









解決方法:
在for語句之前聲明變量(可保證代碼在vc7.1和vc8下同時編譯通過)



2. 指針和引用的聲明
在Vc7.1中, 下面的代碼可以編譯, 但是vc8會報C4430 錯誤。(很難想象有些美國程序員竟然這樣聲明)



解決方法:
把* 或&放到類型的后面.



3. 默認int類型
在vc7.1中,如果定義一個變量但不聲明類型,那么默認為int。VC8不支持。


解決方法:
加上int.


4. 函數的默認返回值類型
同上,VC8不支持把 int 作為默認返回值類




解決方法:
明確聲明函數返回值類型為 int.




5. 函數地址
Vc7中函數名就是地址。在vc8中,必須要使用&操作符同時寫出這個方法的全名(fully qualified name).















解決方法:
加上 &.

6. 隱式類型轉換
VC8不允許B* 到const B*&的隱式轉換.












解決方法:
強制轉換或函數參數變成const B*。

7. 友元方法(Friend function)
VC8不允許聲明一個private或protected函數為友元.













解決方法 1:
聲明友元類.













解決方法 2:
把函數聲明為public













8. STL的stdext 命名空間
在vc8中,hash_map 和hash_set 被移進了stdext命名空間中.


解決方法:
使用stdext 命名空間.


9. 頭文件
許多頭文件如fstream.h 和iostream.h在VC8中已經不存在了.

解決方法:
使用STL.

10. Iterator
一些 STL 類, iterators 不再用指針實現


解決方法:

11. Enum
使用一個Enum的成員時,不要使用enum的名字







解決方法:
去掉Enum 的名字.

posted on 2006-03-09 08:48 夢在天涯 閱讀(1209) 評論(2) 編輯 收藏 引用 所屬分類: CPlusPlus