error C2065: DEBUG_NEW错误

用VC++的向导生成的类, 都带有下面这几行:


#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

有时在使用new操作符的时候就会提示错误error C2065: 'DEBUG_NEW ': undeclared identifier, 特别是在ATL/WTL中新定义类的时候, 在DEBUG版中出现, RELEASE中没有问题.

解决办法是两个:

一. 直接将这几行注释掉

二. 在#define new DEBUG_NEW 之前定义:
 #define DEBUG_NEW new(THIS_FILE, __LINE__)

原因分析:

stdafx.h包含afxwin.h,afxwin.h又包含了afx.h, afx.h文件中有如下定义:
1. #if defined(_DEBUG) && !defined(_AFX_NO_DEBUG_CRT)
2.
3. // Memory tracking allocation
4. void* AFX_CDECL operator new(size_t nSize, LPCSTR lpszFileName, int nLine);
5. #define DEBUG_NEW new(THIS_FILE, __LINE__)
6. #if _MSC_VER > = 1200
7. void AFX_CDECL operator delete(void* p, LPCSTR lpszFileName, int nLine);
8. #endif

在第5行, 就出现了#define DEBUG_NEW new(THIS_FILE, __LINE__) , 所以, 如果是MFC程序, afxwin.h和afx.h都是包含了的, 但如果是ATL程序, 这两个文件是没有的, 故必然出错.

那么有时在MFC程序中也出现这种错误是怎么回事呢?

有时你禁止预编译头stdafx, 系统找不到这个定义,就会报错, 从而出现错误error C2065: 'DEBUG_NEW' : undeclared identifier

 

下面这个红色字体你应该从你的CPP文件中找一下,错误提示的那个CPP文件开头必然有这样的预定义,这定义的意义就是上面所说,把他删掉就没有事了。

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#define new DEBUG_NEW

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据问题描述,出现"Error[Li005]: no definition for 'USART_Config'"错误的原因可能是程序中没有定义名为"USART_Config"的函数。 在移植程序时,可能需要使用到"USART_Config"函数来配置串口通信。然而,在程序中没有找到该函数的定义,导致编译时出现了错误。 要解决这个问题,可以按照以下步骤进行操作: 1. 确保在程序中定义了名为"USART_Config"的函数。请检查你的代码,并确保在.h文件中声明了该函数,并在.c文件中实现了函数的定义。根据你提供的信息,结构体的定义和声明的方法应该是正确的,所以问题可能出现在其他部分的代码中。 2. 检查函数的定义和声明是否匹配。请确保函数的类型、参数和返回值类型在声明和定义中是一致的。如果存在不一致的地方,需要进行修正。 3. 确保在需要使用该函数的地方包含了正确的头文件,并且链接了相应的库文件。请检查你的代码,确保包含了定义"USART_Config"函数的头文件,并且链接了该函数所依赖的库文件。 如果根据以上步骤进行检查和修正后,问题仍然没有解决,那可能需要更详细的代码信息才能找到问题的根本原因。请提供更多相关的代码片段,以便我能够更准确地帮助你解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [IAR 提示 Error[Li005]: no definition for ...的错误 的问题的解决方法](https://blog.csdn.net/idoming/article/details/49883737)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [stm32编译错误error: #20: identifier “USART_IT_RXNE“ is undefined](https://blog.csdn.net/yuyali_123/article/details/119778325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值