上午写程序时,加入了前些写的一个类,编译时遇到如下错误:
...error C2061: syntax error : identifier 'THIS_FILE'
.../new(35) : error C2091: function returns function
.../new(35) : error C2809: 'operator new' has no formal parameters
.../new(36) : error C2061: syntax error : identifier 'THIS_FILE'
.../new(37) : error C2091: function returns function
很奇怪,昨天这个类测试过的,没问题呀,上网查了一下,终于发现问题之所在。
上网搜索一遍,发现出现这些错误与STL头文件和VC6在CPP文件里生成的几行代码有关:——HOHO的专栏
STL头文件是指以下几行
#include <queue>
using namespace std;
VC6在CPP文件里生成的几行代码指以下几行:
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
STL头文件要写在VC6在CPP文件里生成的几行代码之前,谨记!
有时除了直接引用该文件的头文件和实现文件外,还需要检查间接引用该文件的文件,是否#include在#ifdef _DEBUG之后