为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误
Posted
技术标签:
【中文标题】为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误【英文标题】:Why setting DEBUG_NEW in an MFC app can cause compiler error为什么在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误 【发布时间】:2020-04-01 20:57:52 【问题描述】:Here 表示您可以在 MFC 应用程序中使用 DEBUG_NEW 代替 new。当我这样做时,编译器会说 DEBUG_NEW 没有定义。它是 VS 2017。定义了 _DEBUG。有什么问题?
[编辑] 我首先要注意的是,我将它作为整个项目的全局定义。有成千上万的错误(这是一个大项目)。然后我只改变了一次。一个在我的代码中。它不工作。包含但不直接
【问题讨论】:
我知道这是一个非常不具体的问题,但不知道要提供什么信息。平台工具集是 v141,Windows SDK 是 v10.0.16299.0 您写道:您首先看到我将它作为整个项目的全局定义。你应该更新你的问题。另请注意@Joseph Willcoxson 写的内容。查看创建项目时获得的文件,它们已经定义了DEBUG_NEW
。您只会对添加的新 .cpp
文件执行此操作。以与现有文件相同的方式执行此操作。以应有的方式去做,它会奏效的。
【参考方案1】:
您需要更具体。你把它放在哪里?
在新生成的 MFC 应用程序中,他们通常将这些行放在包含后的 .cpp 文件中(参见最后 3 行):
// LangInfo.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "LangInfo.h"
#include "LangInfoDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
【讨论】:
您首先看到我将它作为整个项目的全局定义。有成千上万的错误(这是一个大项目)。然后我只改变了一次。一个在我的代码中。它不工作。 包含但 不直接。 您还没有真正向我们展示任何我们可以提供帮助的东西。我们只是在猜测。生成一个测试 MFC 应用程序,看看 MS 是如何做到的。它存在于每个 MFC 应用程序向导生成的应用程序中。以上是关于为啥在 MFC 应用程序中设置 DEBUG_NEW 会导致编译器错误的主要内容,如果未能解决你的问题,请参考以下文章