用 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 (如果没关的话,直接就定位在那一行了……)