随笔分类 -  C/C++

摘要:为了减少程序中的硬编码,灵活按需管理字符串空间,使用了ATL中的CString类,代码如下 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 C 阅读全文
posted @ 2019-07-31 12:51 cq12yue 阅读(11) 评论(0) 推荐(0)
摘要:结构定义 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 struct state_machine { 2 int state; 3 4 }; 阅读全文
posted @ 2016-05-05 09:46 cq12yue 阅读(35) 评论(0) 推荐(0)
摘要:本文以系统的struct timeval为例,使其支持+、-、+=、-=4种算术运算和<,<=,>,>=,==、!= 6种关系运算,这样一来就免去了显式调用函数的麻烦,使代码简洁优雅,实现如下 Code highlighting produced by Actipro CodeHighlighter 阅读全文
posted @ 2013-10-28 23:37 cq12yue 阅读(6) 评论(0) 推荐(0)
摘要:引言 在面向对象类的设计中,有时为了强化效能,特别是当构造大量小对象时,为了改善内存碎片,就需要自己实现对象的内存管理,以替换系统缺省的分配和释放行为,即全局的new和delete。按照c++标准,在定制类专属的new和delete时,为了减免客户代码使用时的麻烦和问题,需要考虑同时定制简单(nor 阅读全文
posted @ 2012-09-27 17:37 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:信号量是一种用于并发环境同步手段的原语,分为无名信号量和有名信号量两种,前者只能用于线程间同步,而后者还可用于进程间同步。它包括创建、等待、挂出、取值和销毁5种基本操作。与互斥锁不同的是: ● 信号量拥有一个计数值,表示可用的资源数量,仅当该值为0或1时,则相当于互斥锁。 ● 信号量是条件式加锁,即 阅读全文
posted @ 2012-07-20 10:52 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:互斥锁,用来保证任一时刻只有单个线程或进程拥有对共享资源的互斥访问权,在这里将posix thread中的互斥体、win32中的互斥体和临界区,统称为互斥锁,其特点如下: ● 范围:线程锁和进程锁,前者仅用于同一进程内多线程间,而后者用于进程间,显然,它也能用于同一进程内多线程间,但效率较低。pos 阅读全文
posted @ 2012-06-23 00:08 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:自旋锁作为一种并发同步的手段,特别适用于竞争少和锁时间短的情况,在驱动及内核代码中经常被用到,本文讲述一种适合用户态程序的自旋锁,支持Windows和Linux(GCC>=4.1.2)平台,并提供了C语言的接口和实现。 接口 spin_trylock如果获取成功返回1,否则返回0;spin_is_l 阅读全文
posted @ 2012-06-13 21:02 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:主类模板 gcc从4.1.2版本开始提供了__sync_*系列的内置API,用于加减和逻辑运算,可以对1,2,4,8字节长度的数值或指针类型进行原子操作,为方便使用,笔者对这些API作了简单的封装。 Code highlighting produced by Actipro CodeHighligh 阅读全文
posted @ 2012-06-08 00:19 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:类型选择是一种编译时的类型计算技术,也就是根据条件判断来匹配对应的类型,功能形如运行时的if else和switch case控制结构。在这里仿真运行时的条件语句,实现了类型选择,包括if单分支、if多分支和switch case三种结构,关于其原理及细节就不多讲了,直接看如下代码 (1)if单分支 阅读全文
posted @ 2012-06-06 13:49 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:本文就Loki编译期技术中的类型列表Typelist作了一些扩展,增加了以下几个方法: • 获取最大和最小长度,即求取Typelist中长度最大和最小的值 • 获取最大和最小类型,即求取Typelist中长度最大和最小的类型实现 位于Loki::TL命名空间,利用递归计算最值结果,使用宏生成主类模板 阅读全文
posted @ 2012-05-29 01:03 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:C与C++ API的比较 在c语言中,API体现为c函数,如操作系统提供的一系列API,在c++中,API体现为自由函数,这里的自由函数是指除普通成员函数、静态成员函数、友元函数外的能在某命名空间作用域或全局空间内直接访问的函数,而这更多地体现为函数模板,如stl提供的一系列算法swap、count 阅读全文
posted @ 2011-12-24 19:08 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:关于cstatic控件的自绘,网上也有很多的代码及文章,更有其界面画得很漂亮的、多种多样的功能。近来我自行封装实现了一个真彩色静态框类,目标初衷是从颜色、字体、光标入手,改变原始标准cstatic的色彩风格,使界面初步美化,具有好看的效果。同时作为一个基础简单的类来维护,为后续的功能增强及美化提供参 阅读全文
posted @ 2011-12-18 00:54 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:在《多标签视图类CTabView的设计实现》一文中,CTabView从CBasicSubClassWnd私有继承,重写其虚函数SubWindowProc,捕获WM_DRAWITEM和TTN_GETDISPINFO消息,从而实现了DrawItem和UpdateTooltipText虚函数回调机制,支持 阅读全文
posted @ 2011-12-11 11:07 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:在MFC9(在vc2008和vc2010中,已经有了CTabView的现成类)以前的版本中,有CListView,CTreeView,CEditView,CRichEditView等控件视图类,但就是没有类似的CTabView类,因工作需要,最近在做一个简单的多标签IE浏览器,开发环境是vs2005 阅读全文
posted @ 2011-12-11 00:47 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:关于系统托盘图标类,网上也有很多的代码,但都不太简洁灵活易用,为了这一目的,本人自行封装了一个API版本的实现类,这个类的设计思想来源于观察者模式,从而较好地解耦了托盘通知消息的发送、接收、处理这三者间的关系,使这三者可以是同一个对象,也可以是不同的对象,具体的情况可根据业务逻辑灵活选择控制,主要包 阅读全文
posted @ 2011-12-04 03:15 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:一、default constructor 默认构造函数,亦即无参构造函数。从对象构造语义上讲,可分为以下2种:1)trivial 平凡的,可以理解为浅构造 2)notrivial 非平凡的,可以理解为深构造。当一个class没有显式地(explicitly)声明或定义任何constructor的时 阅读全文
posted @ 2011-08-31 11:40 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1/************************************************* 阅读全文
posted @ 2011-08-27 15:12 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:著名的千千静听音乐播放器,其界面简洁优雅、美观大方,特别是它那种几个窗口像磁石般相互吸引,当拖动主窗口时,粘在一起的其它窗口会跟随着一起移动,当拖动其它窗口时,又能脱离不粘在一起,这种窗口效果让用户操作方便,省心省力。为描述方便,本文称这种效果为多窗口的组合分离,它的主要特点是仅用鼠标任意移动窗口, 阅读全文
posted @ 2011-07-04 11:14 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:一般地,泛型容器的设计实现大多只是存储了类型的单个对象,而没有存储类型的多个对象,如果有这样特定的需求,容器内的元素要求都是某个类型的多个对象,那么这时就可以考虑用模板类的数组特化来实现了,作为例程,下面C++代码描述了主模板实现 Code highlighting produced by Acti 阅读全文
posted @ 2011-06-23 12:01 cq12yue 阅读(0) 评论(0) 推荐(0)
摘要:WTL是窗口模板库(Windows Library Template)的简称,是一套轻量级C++ GUI库,因为它使用了C++模板封装了窗口界面操作API和消息映射处理,它扩展了ATL中的UI窗口部分,并支持如下更多的功能特性: (1) 对话框和通用控件:包括对话框数据交换(DDX),子类化,控件消 阅读全文
posted @ 2010-06-14 17:50 cq12yue 阅读(0) 评论(0) 推荐(0)