所以前几天我去编写一个我正在研究的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中并被包含在第三方库中。老实说,我不知道如何处理这个问题...没有其他开发过这个代码的开发人员遇到这个问题,可能是设置问题?我没有使用预编译的头文件。
答案 0 :(得分:4)
如果我冒昧猜测,我会说<new.h>
在全局命名空间中声明set_new_handler
,<new>
在std
命名空间内声明它。有些代码包含<new.h>
,并期望它的行为就像它包含<new>
一样。我怀疑是Evan建议的第三方库/标题或预编译标题。
您可以使用/showIncludes
或预处理源代码文件(使用/E
)并检查输出来缩小罪魁祸首。我通常使用后者并查看输出文件中的#line
指令以找出包含链。