to suddy:
我用的是VC++6.0阿,怎么会不支持C++?
我用的是VC++6.0阿,怎么会不支持C++?
解决方案 »
- 散分,并发布专业图像处理库ImageWizard.dll第一版本。
- 如何得到远程机的桌面显示
- 有了解屏幕取词的吗?有个问题想请教一下:
- [求助]CTreeCtrl的GetItem问题
- 求救驱动的自动安装问题
- 关于生成wmf文件的问题?
- 请问有什么简单点的方法可以使点一按钮后使一菜单项变不可用(变灰)?谢谢
- 高手请入,关于打开其它进程正在使用的文件的问题!
- vc程序员在上海的合理工资是多少?(都有分)
- GetAt()函数有什么功能?
- 请问如何使用word对象保存一个WORD文档?Document.SaveAs的格式参数该怎么填?很着急!谢谢!
- CSocket 与 CSocketFile 如何建立关系,CSocketFile 内容修改,CSocket自动接收?
没有。我包含的是头文件
有那么麻烦吗?我在单独的测试工程里用可是没有问题的阿。
不是。如果是重复包含的话,编译时会出:.... redefined 之类的错误
我在前面说过的,有一个单独的测试工程对他进行功能测试,没有任何问题。
我是在一个.ccp文件中包含这个头文件,这个头文件有VC自己生成的如下一段代码
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
我把他们注释掉就可以了。
我也不知道是为什么,不知哪位高手能不能解释一下?另外,上边VC自己生成的一段代码到底是干什么的?
其实就是把“new”重新定义了,如果你的程序中new过的内存最后没有释放,框架可以检测出来,并把它TRACE到OUTPUT窗口中。比如,有个程序MyTest.cpp的第168行,是:int* pInt = new int[100];但是直到程序退出,这个pInt都没有释放,那就可以在Output窗口中看到:Detected memory leaks!
Dumping objects ->
E:\MYPROJECTS\VC\MyTest\MyTest.cpp(168) : {235} normal block at 0x00376420, 400 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.一般来说,在每个CPP头部那些#include之后,最好都加上那段代码。
但是,不知道为什么你在.h中写了就编不过,我这试了一下,好像可以呀,顶多就是有个重复定义的错。
>#ifdef _DEBUG
>#define new DEBUG_NEW
>#undef THIS_FILE
>static char THIS_FILE[] = __FILE__;
>#endif
>我把他们注释掉就可以了。
>
因为头文件可能重复使用,所以VC只会在cpp文件里面生成这样的代码。