#define 问题

hjessica 2008-03-20 11:57:49
看到一段这样的程序:

#if DBG
#define ALLOC(dwBytes) MyAlloc(__FILE__, __LINE__, (dwBytes))
#define REALLOC(hMem, dwBytes) MyReAlloc((hMem), (dwBytes))
#define FREE(hMem) MyFree((hMem))
#define CHECKFORLEAKS() MyCheckForLeaks()
#else
#define ALLOC(dwBytes) GlobalAlloc(GPTR,(dwBytes))
#define REALLOC(hMem, dwBytes) GlobalReAlloc((hMem), (dwBytes), (GMEM_MOVEABLE|GMEM_ZEROINIT))
#define FREE(hMem) GlobalFree((hMem))
#define CHECKFORLEAKS()
#endif


一直没明白release的时候CHECKFORLEAKS()是怎么调用的?难道是什么都没替换?也就是CHECKFORLEAKS只能在debug时候起作用?
...全文
76 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
星羽 2008-03-20
  • 打赏
  • 举报
回复
release 的时候

#define CHECKFORLEAKS()

CHECKFORLEAKS()就是空,什么都没做
  • 打赏
  • 举报
回复
release的时候这个函数被替换没了。
所以就没这个函数调用了
zhenn007 2008-03-20
  • 打赏
  • 举报
回复
恩,就是这样的
shc7478 2008-03-20
  • 打赏
  • 举报
回复
1.#if DBG//其中DBG必须是一个已经宏定义的符号,并且是一个能转换为bool型的值。
int DBG=1;
#if DBG
#define MAXVALUE 1000
#else
#define MAXVALUE 1
#endif
-------------
#define DBG
#if DBG
#define MAXVALUE 1000
#else
#define MAXVALUE 1
#endif
-------------
#define DBG abc
#if DBG
#define MAXVALUE 1000
#else
#define MAXVALUE 1
#endif
-------------
#define DBG "abc"
#if DBG
#define MAXVALUE 1000
#else
#define MAXVALUE 1
#endif

************
以上几种都是无效或错误的用法,请试验之。
2、如果DBG经过替换后结果为true,将CHECKFORLEAKS()定义为MyCheckForLeaks(),如果DBG经过替换后结果为false,CHECKFORLEAKS()宏定义为
空,所以出现CHECKFORLEAKS()的地方为空。
3、欢迎您与我交流,祝你工作顺利。
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-20 11:57
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下