您的位置:首页 > 其它

一个粗心引起的诡异错误

2010-01-03 21:56 281 查看
用 VS2005 编译得到如下诡异错误:

1>d:/program files/microsoft visual studio 8/vc/include/iterator(13) : error C2332: “struct”: 缺少标记名

1>d:/program files/microsoft visual studio 8/vc/include/iterator(13) : error C2011: “<unnamed-tag>”: “enum”类型重定义
1> d:/program files/microsoft visual studio 8/vc/platformsdk/include/shlobj.h(4495) : 参见“<unnamed-tag>”的声明
1>d:/program files/microsoft visual studio 8/vc/include/iterator(13) : error C2143: 语法错误 : 缺少“;”(在“namespace”的前面)

iterator 怎么会报错呢?

错误指在 _STD_BEGIN,可是查了下,_STD_BEGIN 只是表示命名空间开始,而且我对比过正常 VS 下的 iterator 文件,确实有这句!

后来我新建了个工程,一个文件一个文件添加,添加一个编译一次,直到出现错误,然后定位错误在那个新加入的文件,仔细一看……shit!f**k!

原来那个文件的倒数第二行竟然是:

typedef struct

原来,早起我本打算更改下我的程序,想添加一个结构体,可是后来不知怎么,把 VS 关了,下午再打开,编译就报这个错,找了半天……

以后要注意了,这个可是一个不好的习惯,要在如下几方面改正:

1. 没想好就不要写程序

2. 要写就要把想好的东西尽可能连续的写出来

3. 不要随便关 VS (如果没关的话,直接就定位在那一行了……)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: