1. 变量作用域 在vc7.1中, 如果一个变量定义在for语句的条件从句中,那么这个变量可以在for之后使用。但Vc8禁止这样,会报告一个C2065错误. for (int i = 0; i < 10; ++i)
{ //codes here } if (i < 10).. //error in Vc8 for (i = 0; i < 5; ++i) //error in Vc8 解决方法: int i =0;
for (i = 0; i < 10; ++i) for (i = 0; i < 5; ++i) 2. 指针和引用的声明 const & int a; //error in VC8
const * int b; //error in VC8 int myfun (const & B); //error in VC8 解决方法: const int& a;
const int* b; int myfun (const B&); 3. 默认int类型 static i = 0; // C4430 error in Vc8
const i = 0; //C4430 error 解决方法: static int i = 0;
const int i = 0; 4. 函数的默认返回值类型 Func()
{return 0;}; //error in VC8 解决方法: int Func()
{return 0;}; 5. 函数地址 class A
{ public: int Test(void); }; void fun(int (A::*test) (void)); int main() { fun(A::Test);//C3867 error in VC return 0; } 解决方法: fun(&A::Test);
6. 隐式类型转换 class B{};
void fun ( const B* & );//if possible use const B* instead int main() { B *test = new B(); fun (test); //error in VC8 return 0; } 解决方法: void fun ( const B* );
7. 友元方法(Friend function) class A
{ private: void c(); }; class B { friend void A::c(); //C2248 error, c() is invisible to class B. }; 解决方法 1: class A
{ private: void c(); }; class B { friend class A; }; 解决方法 2: class A
{ public: void c(); }; class B { friend void A::c(); }; 8. STL的stdext 命名空间 #include <hash_map>
std::hash_map //error in VC8 解决方法: #include <hash_map>
stdext::hash_map 9. 头文件 #include <fstream.h> //error in VC8
解决方法: #include <fstream>
10. Iterator std::vector<DMDetailRow> m_data;
std::vector<DMDetailRow>::iterator iter = &m_data[rowNum]; 解决方法: std::vector<DMDetailRow>::iterator Iter = m_data.begin() + rowNum;
11. Enum enum E
{ a,b,c }; E e1 = E::a; //warning in VC8 解决方法: E e1 = a;
|
|