Posted on 2005-11-30 17:33
小明 阅读(2949)
评论(3) 编辑 收藏 引用 所属分类:
C/C++
我接收到一个任务,是把公司的一个产品从vc6迁移到vs2005,结果发现了很多的warning和error
warning 主要是使用了strcpy,strcat这样的函数
这些在2005中都是unsafe_api.
在vs2005都推荐使用strcpy_s,strcat_s.
我想微软这么做固然跟C++ standard有偏差
但是这些函数的使用确实造成了微软产品经常有的漏洞
微软深受这些函数的危害阿
所以在vs2005这些都是warning
error的类型主要是以下几种,多半和STL有关
1.include 带.h的旧式头文件,比如 #include <iostream.h>改为include <iostream>
2.vc6的string iterator的 char *,而vs2005中却不是
strcpy(s.begin(), str);是不能compile的,应改为strcpy((char *) s.c_str(),str);
3.函数返回类型不支持缺省是int
missing type specifier - int assumed. Note: c++ does not support default-int
<Code>
extern IsWindowsNT();
<Fix>
extern int IsWindowsNT();