起草VS2003編譯的一些好的方法和引用
學(xué)習(xí)VS2003編譯時(shí),你可能會(huì)遇到種種問(wèn)題,這里將介紹VS2003編譯問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。很多用戶都很了解VS2003了,但是對(duì)于VS2003編譯還是很陌生,這里我發(fā)表一下個(gè)人理解,和大家討論討論。
STL的iterator不能初始化了,否則會(huì)報(bào)錯(cuò)。
◆std::vector
VS2003編譯,但在2005下就報(bào)錯(cuò):cannot convert from 'int' to 'std::_Vector_iterator
必須寫(xiě)成
◆std::vector
這個(gè)問(wèn)題應(yīng)該在是由于類型檢查更嚴(yán)格造成的。估計(jì)其他類似的使用方法也可能存在問(wèn)題
一些字符串相關(guān)的操作會(huì)警告說(shuō)是不推薦的方法。
例如,如果使用了strcpy函數(shù)的話,就會(huì)出如下警告warning C4996: 'strcpy' was declared deprecated這是應(yīng)為微軟發(fā)明了“安全的C++”概念,意思是說(shuō),strcpy是不推薦使用的函數(shù)。
在vs2005下,數(shù)據(jù)類型必須明確定義
const entrysize=0x10c;//在vs2003下是可以編譯的但在vs2005下報(bào)錯(cuò):error C4430: missing type specifier - int assumed. Note: C++ does not support default-int#t#
必須修改成:const int entrysize=0x10c;
for循環(huán)條件中定義的變量被歸入for循環(huán)代碼塊了
- for(DWORD i=0;i<size;i++)
- VS {
- VS buffer[i]=0;
- VS //some other codes
- VS }
- VS buffer[i]=100;//這里會(huì)報(bào)i沒(méi)有定義的錯(cuò)誤;
- VS 在2005中,必須寫(xiě)成這樣:
- VS DWORD i=0
- VS for(i=0;i<size;i++)
- VS {
- VS //some codes
- VS }
- VS buffer[i]=100;
某些MFC做了變化
Save(CFile file);以上代碼在VS2003下可以使用VS2003編譯,在VS2005中 編譯報(bào)錯(cuò):error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'