Visual Studio 2008,错误c2039:'set_new_handler':不是'std'的成员

时间:2009-07-02 02:11:19

标签: c++ windows visual-studio visual-c++

所以前几天我去编写一个我正在研究的VC ++项目,突然间我几乎在所有文件中都出错:

  

new.h:错误C2039:'set_new_handler':不是'std
的成员   new.h:错误C2039:'set_new_handelr':符号不能在using-declaration中使用

“new.h”和“set_new_handler”未在我的任何文件中使用,因此我不知道这些错误是如何或为何突然出现,因为它们与Windows / VS库文件有关。

有谁知道我能做些什么来清除这个错误并再次编译我的代码?

UPDATE 在检查编译时包含的文件后,会包含一些文件,其中包括一些文件。问题是它被包含在afxwin.h中并被包含在第三方库中。老实说,我不知道如何处理这个问题...没有其他开发过这个代码的开发人员遇到这个问题,可能是设置问题?我没有使用预编译的头文件。

1 个答案:

答案 0 :(得分:4)

如果我冒昧猜测,我会说<new.h>在全局命名空间中声明set_new_handler<new>std命名空间内声明它。有些代码包含<new.h>,并期望它的行为就像它包含<new>一样。我怀疑是Evan建议的第三方库/标题或预编译标题。

您可以使用/showIncludes或预处理源代码文件(使用/E)并检查输出来缩小罪魁祸首。我通常使用后者并查看输出文件中的#line指令以找出包含链。

祝你好运。