一例奇怪的编译错误(VC6)
2006-08-01 17:26
239 查看
一例奇怪的编译错误(VC6)
VC6 编译下段代码会报错.
将出错行
if (mmm.end() == itr) // ERROR
改写为
if (itr == mmm.end()) // OK
就可通过.
(g++可以通过.)
#pragma warning(disable:4786)
#include <map>
typedef std::map<int, int> MYMAP;
int main(int argc, char* argv[])
...{
MYMAP mmm;
MYMAP::const_iterator itr = mmm.find(1234);
// if (mmm.end() == itr) ERROR!!! (VC6)
// if (itr == mmm.end()) OK
if (mmm.end() == itr)
return 123;
return 0;
}
粗略地分析是map.end()返回的是iterator类型,
而iterator::operator==(const_iterator)没有定义.
将map.end()强制为const_iterator也可以通过.
VC6 编译下段代码会报错.
将出错行
if (mmm.end() == itr) // ERROR
改写为
if (itr == mmm.end()) // OK
就可通过.
(g++可以通过.)
#pragma warning(disable:4786)
#include <map>
typedef std::map<int, int> MYMAP;
int main(int argc, char* argv[])
...{
MYMAP mmm;
MYMAP::const_iterator itr = mmm.find(1234);
// if (mmm.end() == itr) ERROR!!! (VC6)
// if (itr == mmm.end()) OK
if (mmm.end() == itr)
return 123;
return 0;
}
粗略地分析是map.end()返回的是iterator类型,
而iterator::operator==(const_iterator)没有定义.
将map.end()强制为const_iterator也可以通过.
相关文章推荐
- 一例奇怪的编译错误(VC6)
- fio编译错误一例
- 现在为了让程序兼容vista,我们需要给程序加上一个manifest文件,可是有时候vc6它就会弹出Resource Compiler Error RC2170 的错误,可能是vc6一个bug,我个人对vc6还是很喜欢的,不过经常会有编译死掉或出错的问题,
- maven编译项目时遇到的奇怪的错误
- VC6编译错误总结
- 奇怪的编译错误RC1015
- 在VC6下编译MTL程序,出现的C4786错误的原因和解决办法
- 编译模块的时候出现的莫名奇怪的错误
- 编译模块的时候出现的莫名奇怪的错误
- VC6 编译对讲程序错误提示
- Delphi 7 编译时出现 Internal error U1295 错误时的处理一例
- 编译Ralink SDK时碰到的奇怪错误(undefined reference to `main')的解决办法
- [原]Unity3d中奇怪的编译错误
- 编译Ralink SDK时碰到的奇怪错误(undefined reference to `main')的解决办法
- Maven报奇怪的各种编译错误解决方案
- C2248编译错误的原因和解决--VC6向VC7.1迁移真是累死人,N多编译错误
- QT4的FindDialog例子在VC6中编译时提示链接错误的一种直观的解决办法(包含过程思路)
- 编译Ralink SDK时碰到的奇怪错误(undefined reference to `main')的解决办法
- Unity3d中奇怪的编译错误
- 工程导入eclipse后,修改编译级别,仍然报一个奇怪的错误。