下列宏是什么意思??

delphihero 2002-03-15 09:20:16
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
#if !defined _HOOH_H_
#define _HOOK_H_
#endif
还有怎么用 vc 生成自定义的类?没学过 sdk编程
...全文
72 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
心念不空过 2002-03-15
  • 打赏
  • 举报
回复
大家说得很全了,我来总结一下吧:)

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
这段是说如果在DEBUG状态,则将THIS_FILE定义换成THIS_FILE[]=__FILE__,__FILE__和__LINE__都是C++的标准宏;
实际上,在afx.h中已经定义了THIS_FILE=__FILE__,此处换成[]的目的是要供DEBUG_NEW来使用(MSDN关于THIS_FILE的解释只是说供ASSERT来调用,)在DEBUG状态定义了DEBUG_NEW后,预处理器会在所有你用到new的地方插入DEBUG_NEW,DEBUG_NEW和new的作用相同,只是可以跟踪每一个分配对象的所在源代码文件名和行号,这样,在使用CMemoryState::DumpAllObjectsSince时,DEBUG_NEW参与显示内存分配信息。而在Release版时,DEBUG_NEW被解析成普通的new,同时也不再产生文件名和行号信息了。
不知道说明白了没有。

#if !defined _HOOH_H_
#define _HOOK_H_
#endif
中间一句应该是#define _HOOH_H_吧?
这段就简单了,因为在VC5以后Microsoft Visual C++不需要makefiel文件了,这样在编译链接的时候就有一个重复定义的问题,很显然,如果一个.h的头文件被include了两次,那就麻烦大了,所以,这三句话的作用是保证只include一次该头文件。

#if等是条件编译,这个没有什么要说的了吧?比如说:
#if Version < 3
BITMAP 1 errbox.bmp
#endif

#ifdef Debug
BITMAP 1 errbox.bmp
#endif

delphihero 2002-03-15
  • 打赏
  • 举报
回复
没人说怎么用 #if、#ifdef、#endif 怎么用呀
kaitty 2002-03-15
  • 打赏
  • 举报
回复
基于Document/view的工程的*.cpp文件跟你上面的一样。
delphihero 2002-03-15
  • 打赏
  • 举报
回复
是不是每个 vc 的 cpp 里面都有这些
hahatoy 2002-03-15
  • 打赏
  • 举报
回复
#define new DEBUG_NEW 用于检测内存泄漏
hahatoy 2002-03-15
  • 打赏
  • 举报
回复
static char THIS_FILE[]=__FILE__; 可以在ASSERT错误的时候提供行号信息#define new DEBUG_NEW 可以检测内存泄漏
其他的大家都说了
kaitty 2002-03-15
  • 打赏
  • 举报
回复
insert-->new class选择generic class,类名为xxx;

project->add to project->files
然后选择xxx的头文件XXX.h和实现文件XXX.cpp

在需要用到xxx类的地方
#include "xxx.h"



kaitty 2002-03-15
  • 打赏
  • 举报
回复
#ifdef _DEBUG
意思是如果是DEBUG则编译这部分。
我就懂这个,见笑。
dockbar 2002-03-15
  • 打赏
  • 举报
回复
__FILE__就是你的文件名

#if !defined _HOOH_H_
#define _HOOK_H_
#endif
这个保证你的这个文件只包含一次


16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧