学习VS2003编译时,你可能会遇到种种问题,这里将介绍VS2003编译问题的解决方法,在这里拿出来和大家分享一下。很多用户都很了解VS2003了,但是对于VS2003编译还是很陌生,这里我发表一下个人理解,和大家讨论讨论。
STL的iterator不能初始化了,否则会报错。
◆std::vector
VS2003编译,但在2005下就报错:cannot convert from 'int' to 'std::_Vector_iterator
必须写成
◆std::vector
这个问题应该在是由于类型检查更严格造成的。估计其他类似的使用方法也可能存在问题
一些字符串相关的操作会警告说是不推荐的方法。
例如,如果使用了strcpy函数的话,就会出如下警告warning C4996: 'strcpy' was declared deprecated这是应为微软发明了“安全的C++”概念,意思是说,strcpy是不推荐使用的函数。
在vs2005下,数据类型必须明确定义
const entrysize=0x10c;//在vs2003下是可以编译的但在vs2005下报错:error C4430: missing type specifier - int assumed. Note: C++ does not support default-int#t#
必须修改成:const int entrysize=0x10c;
for循环条件中定义的变量被归入for循环代码块了
- for(DWORD i=0;i<size;i++)
- VS {
- VS buffer[i]=0;
- VS //some other codes
- VS }
- VS buffer[i]=100;//这里会报i没有定义的错误;
- VS 在2005中,必须写成这样:
- 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中 编译报错:error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject'