
C&C++
文章平均质量分 57
rabbit729
这个作者很懒,什么都没留下…
展开
-
VS2008无法下断点调试的若干解决办法
调试程序中有时会遇到无法下断点的情况,下面总结几个用到的解决该问题的方法:方法一:菜单tools->Options->Debugging->General,有个Require source files to exactly match the original version的选项取消;方法二:在breakpoints窗口中选定无法设定的断点点右键选择location...然后在弹出原创 2011-06-21 16:44:00 · 8763 阅读 · 0 评论 -
VS2008无法为添消控件添加消息响应函数的解决办法
问题描述:在使用VS2008为对话框中控件添加消息响应时总是弹出” add/remove operation is impossible because the code element *** is read only” 解决方法:由于刚装VS2008时,每次打开工程,这时vc的左下角正显示正在更新IntelliSense...。这种情况出现了几次,一等就是几十分钟。真是令人烦躁。并且C原创 2009-09-26 22:57:00 · 4532 阅读 · 1 评论 -
两个浮点数比较大小方法
a>b if( (a-b) > EPSINON)aa>=b if( (a-b) >= -EPSINON)aa==b if ((a-b>=-EPSINON) && (a-b原创 2009-06-20 11:04:00 · 6025 阅读 · 4 评论 -
GetDlgItem()返回NULL的问题
在使用如下方式使用GetDlgItem()时,出现返回NULL的情况:(该对话框的ID为IDD_SIMP_ARROW_PROPERTY)CWnd* pBox= GetDlgItem(IDC_SIMP_ARROW_STYLE);原因:发现在工程一的Resource.h文件中IDD_SIMP_ARROW_PROPERTY定义如下:#define IDD_SIMP_ARROW_PROPERTY原创 2009-06-14 13:27:00 · 5554 阅读 · 2 评论 -
VS2003bug-重载虚函数无法调用
今天发现一个vs2003编译器的一个bug,我在子类中重写了父类中的一个虚函数,然后在子类的虚函数中设置断点,调试运行发现程序没有进入断点处,百思不得其解,随即向我们项目组老大请教,他说这个是VS2003的一个bug,让我重新rebulid工程,果然问题解决。老大真牛!佩服!!!!原创 2009-06-10 22:53:00 · 1123 阅读 · 1 评论 -
“VS2003调试时无法跟踪函数”问题解决方法
最近使用VS203调试程序时遇到如下一个问题:问题描述:在一个解决方案中有两个工程(DLL),假设分别为A,B在工程A中有一个接口funA(),在工程B中的接口funB()中调用了工程A中的接口funA(),在调试程序时无法从工程B的funB()接口中按F11进入工程A的funA()接口实现代码处,在工程A的funA()中设置断点也不行原因:是由于工程A和工程B生成的.pdb文件不一致造成原创 2009-06-06 16:38:00 · 1355 阅读 · 0 评论 -
注意类的虚函数的一个用法
#include using namespace std;class A{public: A() { cout<<"A Create!"<<endl; } ~A() { cout<<"delete A!"<<endl; } virtual void fun1() { cout<<"A fun1()"<<endl; }原创 2009-06-05 22:26:00 · 713 阅读 · 0 评论 -
MFC中如何在一个消息中捕获其它消息
在日常工作中经常遇到在一个消息中捕获其它消息,比如当用户按下鼠标左键时,还想捕获鼠标移动的消息。这个该怎么处理呢?其实只需要在OnLButtonDown()中使用::GetMessage(&msg, NULL, 0, 0);来不停的截取系统消息,并根据msg的消息码来处理你想截获的消息即可。在下面这段代码中,当用户按下鼠标左键时在OnLButonDown()中将截获所有的系统消息,知道收到LB原创 2009-08-07 22:26:00 · 2340 阅读 · 0 评论 -
VS2005的一个常见编译错误的解决方法
VS6.0里写个最简单的语句MessageBox("Hello,World!");编译运行没有任何错误。而在VS2005写MessageBox("Hello,World!");出现错误提示:error C2664: CWnd::MessageBoxW : cannot convert parameter 1 from const char [13] to LPCTSTR解决方原创 2009-04-16 23:29:00 · 991 阅读 · 0 评论 -
Makefile详解
转贴地址:http://rabbitlzx.blogbus.com/logs/8313897.htmlhttp://blog.youkuaiyun.com/ugg/archive/2007/05/23/1622555.aspx 原贴作者:陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好转载 2009-03-24 15:36:00 · 1076 阅读 · 0 评论 -
Cygwin使用
对于经常在Windows编程的使用者,想体验*nix编程可以选择vw,vpc,双系统,而对于真正的开发者而言一个*nix shell加上GCC GDB MAKE以及相关的函数库文件足以,哦,也许加上DEVDOC才算完整,也就是可以使用man,所有这些cygwin完全可以搞定。cygwin简介:这个问题你最好google一下"cygwin的历史",或许能够获得更为详尽的答案。简而言之,cygw转载 2009-03-24 15:26:00 · 1295 阅读 · 0 评论 -
深入C++的new
“new”是C++的一个关键字,同时也是操作符。关于new的话题非常多,因为它确实比较复杂,也非常神秘,下面我将把我了解到的与new有关的内容做一个总结。new的过程当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间、调用构造函数、返回正确的指针。当然,如果我们创建的是简单类型的变量,那么第二步会被省略。假如我们定义了如下一个类A:class A转载 2009-03-20 17:10:00 · 853 阅读 · 0 评论 -
重新认识C++中new的用法
在写这篇文章之前,项目中用new申请内存时经常使用下面的代码段: int *pIntArray = new int[400000000]; if (NULL == pIntArray) { cout<<"申请内存失败!"<<endl; assert(0); } 今天重新看了《Effective C++》条款7指出上面的if (NULL ==原创 2009-03-20 15:58:00 · 1499 阅读 · 2 评论 -
has a / is a 的区别
发现一篇介绍has a/is a区别的文章,特转贴,原贴地址:http://hi.baidu.com/ilotus_y/blog/item/c9917abf3a95100d19d81f81.html 如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。如果你确定两件对象之间是has-a的关系,那么此时你转载 2009-03-17 17:04:00 · 1936 阅读 · 0 评论 -
拷贝构造函数和赋值构造函数声明为私有的作用
转贴地址:http://blog.youkuaiyun.com/winer632/archive/2009/01/12/3762292.aspx每个类只有一个赋值函数. 由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心: 1.如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有转载 2009-03-18 10:17:00 · 5461 阅读 · 2 评论 -
win32和MFC下如何使用控制台窗口
在win32和MFC程序中,有时需要输出一些调试信息,本文介绍在win32和MFC程序中使用控制台输出信息的方法。我们可以在应用程序里使用AllocConsole()函数自己开一个控制台(就像DOS窗口一样),然后重定向输入输出,就可以用printf函数向控制台输出信息了,具体方法如下: 在CWinApp的重载函数InitInstance()中输入如下语句,开辟一个控制台并重定向输出原创 2009-11-05 21:52:00 · 8933 阅读 · 2 评论 -
指针数组作为函数参数的使用问题
#include using namespace std;void fun(char** p, int num){ for (int i = 0; i { char* pTemp = p[i]; cout }}void main(void){ char* aaa[] = {"a11", "b11", "c11"}; fun(aaa, 3);原创 2009-11-12 15:22:00 · 1936 阅读 · 1 评论 -
Release下报错,Debug下正常原因总结
首先介绍如何在Release模式下调试: 步骤如下: 1、在Project Settings里选Settings For为All Configurations。 2、在C/C++标签中,Debug info 选 Program Database。 3、在Link 标签中,Category选 Debug,选中Debug info 复选框和Microsoft format。 现在就可以像在调试版本中那样设置断点进行测试了,由于代码优化,有些变量观察不到,行的运行顺序可原创 2010-11-23 11:12:00 · 5586 阅读 · 1 评论 -
如何检测内存泄漏——重载new和delete
版权申明 本文可以被自由转载,但是必须遵循如下版权约定: 1、保留本约定,并保留在文章的开头部分。 2、不能任意修改文章内容,或者删节,增加。如果认为本文内容有不当之处需要修改,请 与作者联系。 3、不能摘抄本文的内容,必须全文发表或者引用。 4、必须保留作者署名、注明文章出处。(本文授权给www.linuxaid.com.cn) 5、如不遵守本规定,则无权转载本文。 作者 ariesram 电子邮件地址 ariesram@linuxaid.com.cn, 或 ariesram@may10.ca 本文及本转载 2010-12-11 12:32:00 · 1370 阅读 · 0 评论 -
深入浅出浮点数
<br />7月27日<br />深入浅出浮点数<br />Floating Point Number In a Nutshell<br />深入浅出浮点数<br />Stephen Suen<br />Copyright © 2005 Stephen Suen. All rights reserved. <br />浮点数(Floating Point Number)计算机系统中用于表达实数或者说小数的一种方式。由于其表达方式的原因,产生了围绕浮点数的许多常见问题。最典型的就是"为什么我的浮点运算的结果和转载 2010-12-07 20:40:00 · 992 阅读 · 0 评论 -
VS2003无法启动调试 没有正确安装调试器错误解决方案
<br />当你遇到“试图运行项目时出错:无法启动调试 没有正确安装调试器。请运行安装程序安装或修复调试器”,请尝试下面的操作可以解决你的问题:<br /><br />1、请确定你的操作系统是否运行在debug模式下,此时VS.NET将不能调试。<br /><br />2、确定你的项目已经启动了“非托管代码”调试选项。<br /><br />3、尝试重新安装VS.NET中的修复选项。<br /><br />4、在命令行中尝试重新注册mscordbi.dll(regsvr32 mscordbi.dll)文件,转载 2010-08-17 21:03:00 · 2075 阅读 · 0 评论 -
常见编译/链接错误及其解决办法
1. 解决error LNK2005: ___crtExitProcess 已经在 LIBCMTD.lib(crt0dat.obj) 中定义有的時候, 在 Debug 模式下編譯沒問題, 換到 Release 模式就發生一堆問題.典型的例子, 就是因為 c++ runtime library 設定不同, 所造成的重複定義連結錯誤.而另一個常見的例子是 專案與 library 使用不同的字元转载 2010-05-27 20:44:00 · 734 阅读 · 0 评论 -
介绍两个检测内存越界的工具pagehedap和gflags
一.pageheap1.安装pageheap工具2.开启pageheap:pagehedap /enable ***.exe 0x033.启动需要调试的程序,当执行异常操作后,直接指定到了直接导致异常的代码处。4.不使用pageheap时:pageheap /disable ***.exe 二.gflags1. 安装:Debugging Tools for Window原创 2010-05-27 20:40:00 · 2062 阅读 · 0 评论 -
void指针介绍
看到一篇介绍Void指针的文章,觉得写的不错,转贴如下,原帖地址:http://icoding.spaces.live.com/blog/cns!209684E38D520BA6!130.entryvoid指针指针有两个属性:指向变量/对象的地址和长度但是指针只存储地址,长度则取决于指针的类型编译器根据指针的类型从指针指向的地址向后寻址指针类型不同则寻址范围也不同,比如:转载 2010-05-23 11:05:00 · 2472 阅读 · 1 评论 -
测试程序片段执行时间的代码段
在编程过程中经常遇到测试一段程序执行时间的问题,下面给出两种测试代码段执行时间的方法以供参考。第一种方法:低精度,GetTickCount()函数的精度只有10ms,所以如果程序执行时间小于10ms,不能使用该函数DWORD Milliseconds_Parser_Start;DWORD Milliseconds_Parser_End;Milliseconds_Parser_Start = :原创 2010-05-22 21:40:00 · 1683 阅读 · 0 评论 -
如何判断一个float/double是不是一个有效的值
前几天游戏程序爆在三角形碰撞测试里面.结果发现是D3DXIntersectTri给我返回了一个float(-1.#INF000).这个值相信大家都不陌生.出现这个值的情况一般是除数为0的情况下,即分母为0.就像这样: float a = .7f; float b = .0f; a /= b;那么如何判断一个float/double值是不是(-1.#INF000转载 2010-04-29 11:57:00 · 8006 阅读 · 0 评论 -
动态二维数组的分配与释放
今天在群里遇到一个询问二维数组动态申请的问题,自己想了一种办法,又在网上搜了一下,觉得下面这篇文章写得不错,特转帖如下:两种方法:1。先定义一个一维数组的类型,然后再用该类型定义一个一维数组(实际上已经成为二维的) 相当于递归定义 typedef int array[COL]; //使用typedef定义一个具有COL个元素转载 2010-03-29 16:27:00 · 5699 阅读 · 0 评论 -
关于MSXML和xerces中关于DOMDocument重定义的问题
今天在VS2003下使用xerces解析XML时遇到如下编译错误: “error C2872: “DOMDocument” : 不明确的符号”找了好久没有找到问题所在,最后在网上查找资料说是MSXML和xerces中存在DOMDocument重定义问题。而我的工程中包含如下头文件:#include "Basefun.h"#include #include #include原创 2010-03-21 14:00:00 · 3660 阅读 · 0 评论 -
VC++中动态链接库的显示加载和隐式加载的区别
两种方法对于你的程序调用动态库时没有任何区别,只是你在编程时,步骤是不一样的。显式调用麻烦了点,但可以没有相应的lib库;隐式调用,使用起来比较简单,有函数的声明(头文件.h)就可以了,但必须有lib库。在VC中两种方式的具体方法:一、动态库的隐示调用:在 VC 工程中直接链接静态输入库XXX.lib,然后即可像调用其它源文件中的函数一样调用DLL中的函数了。二、动态库的显式调用:显式调用动态库原创 2009-11-12 22:32:00 · 2796 阅读 · 0 评论 -
使用Def文件导出Dll文件
本文介绍如何使用Def文件制作DLL。 模块定义 (.def) 文件是包含一个或多个描述 DLL 各种属性的 Module 语句的文本文件。如果不使用 __declspec(dllexport) 关键字导出 DLL 的函数,则 DLL 需要 .def 文件。.def 文件必须至少包含下列模块定义语句:文件中的第一个语句必须是 LIBRARY 语句。此语句将 .de原创 2009-11-12 21:45:00 · 7794 阅读 · 0 评论 -
VS2005,2008快捷键汇总
CTRL + SHIFT + B生成解决方案CTRL + F7 生成编译CTRL + O 打开文件CTRL + SHIFT + O打开项目CTRL + SHIFT + C显示类视图窗口F4 显示属性窗口SHIFT + F4显示项目属性窗口CTRL + SHIFT + E显示资源视图F12 转到定义CTRL + F12转到声明CTRL + ALT +转载 2009-11-16 15:18:00 · 925 阅读 · 1 评论 -
Linux头文件作用
1、 一些头文件的作用::ANSI C。提供断言,assert(表达式):GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含:GCC。文件夹操作函数。struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等:ANSI C。字符测试函数。isdigit(),islowe转载 2009-03-18 10:30:00 · 2295 阅读 · 0 评论 -
浅析一道C++设计面试题
问题描述: 有一个饭店搞活动,普通客人吃饭打9折,银卡客户在此基础上再打8折,金卡客户再在此基础上打7折,问:该如何设计这个程序并用C++代码实现? 拿到这个题目后我的第一反应是使用一个抽象类提供一个打折操作的接口,然后普通客人、银卡客户和金卡客户分别实现该接口,在具体实现时使用多态来实现该功能,具体代码如下:#include using namespace std;原创 2009-03-17 21:59:00 · 2394 阅读 · 5 评论 -
VC中利用管道技术取得DOS或者命令行以及外部程序的执行结果
不知你是否用过这样的程序,他们本身并没有解压缩的功能,而是调用DOS程序PKZIP完成ZIP包的解压缩。但是在程序运行时又没有DOS控制台的窗口出现而且一切本应该在DOS下显示的信息都出现在了那个安装程序的一个文本框里。这种设计既美观又可以防止少数眼疾手快的用户提前关了你的DOS窗口。 现在就来讨论一下,如何用匿名管道技术实现这个功能。 管道技术由来已久,相信不少人对DOS命令里的管道技术转载 2008-11-17 14:03:00 · 3431 阅读 · 0 评论 -
内存泄漏定位
第一种:通过"OutPut窗口"定位引发内存泄漏的代码(下面转,我写的没原文好,也懒得写)。 我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp { public: BOOL InitApplication() { int* leak = new in转载 2008-06-17 23:02:00 · 1741 阅读 · 0 评论 -
利用Rational Rose进行C++代码和数据库结构分析
一.Rational Rose逆向工程介绍逆向工程(Reverse Engineer)就是从现有系统的代码来生成模型的功能。分析已有的代码其主要的目的就是了解代码结构和数据结构,这些对应到模型图就是类图、数据模型图和组件图(对UML各种模型图的描述见注释③),也就是通过Rational Rose的逆向工程所得到的结果。Rational Rose所支持的逆向工程功能很强大,包括的编程语言转载 2008-08-25 10:32:00 · 978 阅读 · 0 评论 -
Windows环境下log4cxx的编译及使用
1.介绍 Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得。当前的最新版本为0.10.0,原创 2008-08-05 16:58:00 · 6334 阅读 · 3 评论 -
C++中利用多线程实现定时器
使用多线程技术实现了一个简单的定时器类: /********CTimer.h***********/ #ifndef CTIMER_H_#define CTIMER_H_#include class CTimer{public: CTimer(); ~CTimer(); void StartTimer(unsigned i原创 2008-07-29 10:39:00 · 7448 阅读 · 0 评论 -
关于在C++开发的项目中引用后缀名为.c文件的一句话提醒
在C++开发的项目中如果引用包含有.c后缀的文件时可能会出现一些莫名其妙的问题,所以在使用C++开发的项目中最好把所有后缀名为.c的文件修改为.cpp的原创 2008-07-16 15:54:00 · 1164 阅读 · 0 评论 -
error C2143: 语法错误 : 缺少“{”(在“:”的前面)编译错误的解决
最近写程序遇到如下问题:编译时编译器提示一堆如下错误:c:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include/cerrno(18): error C2143: 语法错误 : 缺少“{”(在“:”的前面)找了很长时间,最终的原因是:在我的源文件中使用了C++的库函数,但是我却将这个源文件的后缀名写成.c而不是.cpp,将其原创 2008-05-02 14:48:00 · 23121 阅读 · 6 评论