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

Posted

技术标签:

【中文标题】Visual Studio 2008,错误 c2039:“set_new_handler”:不是“std”的成员【英文标题】:Visual Studio 2008, error c2039: 'set_new_handler' : is not a member of 'std' 【发布时间】:2009-07-02 02:11:19 【问题描述】:

所以前几天我去编译一个我正在处理的 VC++ 项目,突然间我几乎所有文件都出现错误:

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

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

有人知道我可以做些什么来清除这个错误并重新编译我的代码吗?

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

【问题讨论】:

通常在 中找到,that 是否包含在任何地方? 另外,您说几乎所有文件都发生了这种情况。您是否查看过您可能正在使用的任何预编译头文件? 我没有使用任何预编译的头文件。 【参考方案1】:

如果我冒险猜测,我会说 <new.h> 在全局命名空间中声明 set_new_handler<new>std 命名空间中声明它。一些代码包含<new.h>,并期望它的行为就像它包含<new>一样。我会怀疑 Evan 建议的某些 3rd 方库/头文件或预编译头文件。

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

祝你好运。

【讨论】:

以上是关于Visual Studio 2008,错误 c2039:“set_new_handler”:不是“std”的成员的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2008 中将 Fxcop 错误显示为编译错误

链接错误2005 Visual Studio 2008 C++

奇怪的 Visual Studio 2008 C++ 编译器错误

解读将 Visual C++ 6 项目升级到 Visual Studio 2008 时出现的错误

visual studio 2008 - 构建问题

visual studio 2008 解决方案发布版运行时致命错误