自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

转载 查看展开宏代码的快捷方法

<br /> <br />在阅读一些大量使用宏的C项目源码的时候,相信你一定和我一样被宏嵌套折腾得晕头转向,不过没关系,我找到了一种简单的方法,可以将宏作为字符串打印出来,以方便分析:#define macro_to_str1(x) #x #define macro_to_str(x) macro_to_str1(x) .... const char* str=macro_to_str(AnyMacro); printf("%s",str);  AnyMacro是任何你想打印出来的

2011-01-12 10:03:00 2442

原创 关于windows消息

<br />大部分消息宏定义在winuser.h里<br />但调试时发现有一个0x0019消息在这里找不到定义<br />费了老大的劲才找到这个消息的定义在windowsX.h<br />原来是WM_CTLCOLOR...<br />顺便发现windowsX.h里定义了许多宏, 看来在win32编程中应该会比较有用<br /> 

2011-01-07 10:58:00 317

原创 拷贝构造函数的陷阱

今天调试程序的时候中断了,一看发现是一个Handle被重复CloseHandle原因是这个类的这个Handle是在构造的时候CreateEvent,在析构的时候CloseHandle而由于没有重载拷贝构造函数,那么就会出现这个问题,下面用简单代码说明 class AA{public:AA(){m_hdl = CreateEvent(...)}~AA(){CloseH

2009-02-18 15:09:00 566

原创 另一篇关于宏的

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等。下面列举一些成熟软件中常用得宏定义。。。。。。1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H  //头文件内容#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef  uns

2009-01-16 11:58:00 388

转载 C中的预编译宏定义

 今天找有关函数宏的资料看到这篇文章,觉得还不错,就转来了。一不小心就看了一上午 - - 注:在VC中,想看到宏展开后的代码,设置在项目->属性->C/C++->预处理器->生成预处理文件打开这个选项后,去工程下找相应的.i文件,就能看见宏展开后到底是个什么了:) 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preproces

2009-01-15 17:10:00 2216

转载 深入C++的new

http://www.builder.com.cn/2008/0104/696370.shtml

2008-08-27 16:28:00 336

转载 关于stdafx.h

(1)Standard Application Frame Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。为避免这种浪费,App

2008-06-28 01:36:00 464

转载 cin(觉得这文章还不错就转来了)

第一次搞cin,真是搞昏人了,现在逐渐开始明白是什么东东,一起探讨一下吧! 首先大家要知道cin是怎么一回事,为什么要有?在C中,输入输出要用printf和scanf,这是2个很麻烦的东西,因为在输入数据的同时还要说明数据的类型,如果输入数据较多,那就很麻烦了,所以我们的C++搞了两个更爽的东西cout和cin,来替换它们.首先我们先了解一下这两个东西的来处,它们是来自C++的一个类库叫 

2008-06-26 09:53:00 655

转载 返回值优化

通过传值方式返回要创建新对象时,应注意使用的形式。例如在operator+ :return Integer( left.i + right.i );             (1)与Integer tmp( left.i + right.i );                 (2)return tmp;对于(2),将发生三件事。首先,创建tmp对象,包括构造函数的调用。然后

2008-06-23 14:06:00 452

原创 多线程多核的delete陷阱

char *p = new char;DWORD WINAPI THREAD(LPVOID lpParameter){ while(1) {  if(p != NULL)  {   delete p;   p = NULL;   p = new char;  } }}int main(){ HANDLE handle = CreateTh

2008-06-12 10:17:00 1111

原创 委托和反射的实现

http://topic.csdn.net/u/20070727/17/ad2c2f72-e928-41b1-b9c4-3d380ec26db6.html?809865799 具体的以后学习了再补充 ^_^

2008-05-27 10:06:00 328

原创 静态变量的三种主要用途

static变量大致分为三种用法1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期. 2. 用于全局变量,主要作用是限制此全局变量被其他的文件调用. (此点注意)3. 用于类中的成员.表示这个成员是属于这个类但是不属于类中任意特定对象

2008-05-13 16:38:00 1358

原创 非public构造函数与私有继承

http://topic.csdn.net/u/20080421/20/db93909c-f9f4-4642-9cb0-d06e09b09540.htmlclass ToolClass{protected:    ToolClass(){        flag ++;        _m = flag;        cout     }    ~ToolClass(){}prote

2008-04-23 17:53:00 560

转载 句柄类

C + +中的存取控制允许将实现与接口部分分开,但实现的隐藏是不完全的。编译器必须知道一个对象的所有部分的声明,以便创建和管理它。我们可以想象一种只需声明一个对象的公共接口部分的编程语言,而将私有的实现部分隐藏起来。但C + +在编译期间要尽可能多地做静态类型检查。这意味着尽早捕获错误,也意味着程序具有更高的效率。然而这对私有的实现部分来说带来两个影响:一是即使程序员不能轻易地访问实现部分,但他可

2008-04-21 15:21:00 2026 2

原创 拷贝构造函数与重载=操作符

class A;A b;A a = b;  //此时是初始化,调用的是拷贝构造函数,而不是重载的=操作符A c;c = b; //此时是赋值,调用的是=操作符 今天看见类似的帖子,觉得有必要记录下来。。供自己和大家学习参考。。。基础知识还是需要巩固的,从今天开始每天积累一点。。。

2008-04-14 11:38:00 407

转载 static用法小结

static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储形式可分为三种auto, static, regis

2007-04-27 09:44:00 540

转载 临时对象的构造与析构

#include using namespace std;class Base{public:Base() { cout ~Base() { cout };void main(){Base();Base b;Base c;}/* 此程序输出:Constructor calledDestructor calledConstructor calledConstructor called

2007-04-27 09:25:00 737

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除