Posted on 2005-11-30 17:33
小明 閱讀(2963)
評(píng)論(3) 編輯 收藏 引用 所屬分類:
C/C++
我接收到一個(gè)任務(wù),是把公司的一個(gè)產(chǎn)品從vc6遷移到vs2005,結(jié)果發(fā)現(xiàn)了很多的warning和error
warning 主要是使用了strcpy,strcat這樣的函數(shù)
這些在2005中都是unsafe_api.
在vs2005都推薦使用strcpy_s,strcat_s.
我想微軟這么做固然跟C++ standard有偏差
但是這些函數(shù)的使用確實(shí)造成了微軟產(chǎn)品經(jīng)常有的漏洞
微軟深受這些函數(shù)的危害阿
所以在vs2005這些都是warning
error的類型主要是以下幾種,多半和STL有關(guān)
1.include 帶.h的舊式頭文件,比如 #include <iostream.h>改為include <iostream>
2.vc6的string iterator的 char *,而vs2005中卻不是
strcpy(s.begin(), str);是不能compile的,應(yīng)改為strcpy((char *) s.c_str(),str);
3.函數(shù)返回類型不支持缺省是int
missing type specifier - int assumed. Note: c++ does not support default-int
<Code>
extern IsWindowsNT();
<Fix>
extern int IsWindowsNT();