
c/c++
文章平均质量分 58
fingding
这个作者很懒,什么都没留下…
展开
-
do{}while(0)用法
do{}while(0)大致有两种基本用法:1. 宏定义 当宏定义中有多个语句时,采用do{}while(0)可以避免不必要的错误。 我们从一般的宏定义引出使用do{}while(0)的好处 1.1 原始定义 #define return_if_failed(p) if (p) { / printf(#p“ failed!/n”); /原创 2011-01-21 14:26:00 · 1510 阅读 · 0 评论 -
详解C中volatile关键字(讲解的很详细,还有优化问题(硬软件优化))
http://www.cnblogs.com/yc_sunniwell/archive/2010/06/24/1764231.htmlvolatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新转载 2012-01-11 13:37:46 · 654 阅读 · 0 评论 -
命名空间
namespace,是指标识符的各种可见范围。新C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。1. 与区别 iostream中使用了std命名空间,所以需要使用std::out来输出,而iostream.h使用全局命名空间,这是早期的C++实现,用于兼容以前c++程序。2. 有名命名空间 定义 name原创 2014-02-17 13:55:04 · 614 阅读 · 0 评论 -
static_cast, dynamic_cast和reinterpret_cast
static_cast:用于基本类型(int,char, float, double等)转换,指针除外dynamic_cast:类家族之间指针或引用的转换,它可以识别出不安全的下行转换,但并不抛出异常,而是将转换的结果设置成nullreinterpret_cast:这个转换是最“不安全”的,两个没有任何关系的类指针之间转换都可以用这个转换实现,所以叫强制转,转换在系统底层的操作,有极强原创 2014-05-05 14:14:33 · 534 阅读 · 0 评论 -
重载和double dispatch
1. 函数重载参数表不相同(参数型别不同或者参数数目不同)的两个或多个函数可以构成重载函数,编译器不能通过返回类型来判断几个函数是否为重载函数1> 参数型别不同: 注意: 这里的类别不仅指基本类型(short、int、long、char、float、double 基本类型的指针等),还包括复杂类型(父类类,各子类)(与double dispatch有关联)2> 参数数目不同原创 2014-07-01 22:03:52 · 751 阅读 · 0 评论 -
pthread_cond_t和pthread_mutex_t(条件变量和互斥锁)
pthread_mutex_t: 互斥锁,多线程中对共享变量的包吧pthread_cond_t原创 2014-07-03 21:02:05 · 14907 阅读 · 0 评论 -
ICU ld error
编译icu并链接时可能出现以下错误:原创 2014-10-09 15:39:40 · 2262 阅读 · 0 评论 -
模板特殊化(Template specialization)
http://hi.baidu.com/yzmforever123/item/5ce760521239219408be17a4模板的特殊化是当模板中的pattern有确定的类型时,模板有一个具体的实现。例如假设我们的类模板pair 包含一个取模计算(module operation)的函数,而我们希望这个函数只有当对象中存储的数据为整型(int)的时候才能工作,其他时候,我原创 2014-06-18 09:46:56 · 2771 阅读 · 0 评论 -
Bitmap 格式
Bitmap是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),DDB已经就转载 2014-09-02 14:14:23 · 10287 阅读 · 1 评论 -
setjmp
chromium内核在创建render进程时用到了setjmp和longjmp,用法整理如下:#include #include jmp_buf buf;void test_longjmp(void){ printf("0000000001\n"); longjmp(buf, 4); // 重新执行setjump,并使得该函数返回原创 2015-06-03 17:21:07 · 645 阅读 · 0 评论 -
如何在运行时确定对象类型(RTTI)
http://www.vckbase.com/document/viewdoc/?id=653如何在运行时确定对象类型(RTTI)作者:NorthTibet RTTI 是“Runtime Type Information”的缩写,意思是:运行时类型信转载 2011-10-09 10:46:11 · 419 阅读 · 0 评论 -
C 数据类型总结(转载于51cto 熔岩)
http://lavasoft.blog.51cto.com/62575/187220 C99标准 一、数据类型 数据类型是按照规定形式表示数据的一种方式,不同的数据类型占用空间也不同。 为了学习方便,特意整理了下C语言的数据类型的分类结构,如下转载 2011-10-09 09:55:40 · 701 阅读 · 0 评论 -
Opaque Pointers——不透明指针
Programming Tools - Opaque Pointersby Chris McKillopOne of the most powerful concepts when writing software is abstraction - hiding转载 2011-10-08 17:28:38 · 6818 阅读 · 0 评论 -
gcc -D
<br /> <br /> 编译时用到了预定义宏,查了写资料,总结一下:<br /> gcc -DDEBUG main.c 或者<br /> gcc -D DEBUG main.c(区别有无空格,都可以)<br /> 这样在main.c中就定义了宏DEBUG了<br /> <br /> 同样如果想取消宏定义,则:<br /> gcc -UDEBUG main.c <br />原创 2011-01-27 10:17:00 · 1359 阅读 · 0 评论 -
(转载)fopen /open,read/write和fread/fwrite区别
<br />转载URL:http://hi.baidu.com/%B9%C8%C9%F1%B2%BB%CB%C0jdp/blog/item/c9cf550bf6c5d1c33ac7639c.html<br />fopen /open区别<br />UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write<br />这里简单的介绍一下他们的区别。<br />1. fopen 系列是标准的C库函数;open系列是 POSIX 定转载 2011-02-12 11:14:00 · 787 阅读 · 0 评论 -
Unit Test
最近在做单元测试的工作,以前还没有真正接触测试工作,对测试的一些基本概念都不知道,哎,真是惭愧。 1. 静态代码检测 测试之前最好做一些静态代码的分析,Linux下选用的工具是cppcheck(编译源码后既有命令行工具又有GUI工具,不错)。相关代码原创 2011-09-01 16:37:19 · 682 阅读 · 0 评论 -
数组内即能存int,又能存double,还能存string了
http://zhidao.baidu.com/question/76298192.html 1、用一个共有基类统一所有打算放在一起的对象class base_{};class A:public base_{};class B:......base * pC转载 2011-09-02 09:21:10 · 2315 阅读 · 0 评论 -
expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before
网上看到一些说出现该错误的原因,再加上自己出现后发现的原因,总结一下:1. 用gcc编译.cpp文件(自己没有试验成功,暂且记下) 2. 出现c中不认识的关键字。最常见的就是bool了,c中没有bool关键字,所以当c源文件中出现bool且用gcc编译时,就会原创 2011-08-12 10:47:35 · 839 阅读 · 0 评论 -
c++构造函数中无法实现多态
今天简单写了个Factory Method,结果没有效果,很是纳闷。研究之后发现还是自己c++基础不牢固阿!#include class Factory{ public: virtual void createSomething() = 0原创 2011-09-21 14:48:58 · 2873 阅读 · 0 评论 -
glib g_main_loop理解
http://soft.zdnet.com.cn/software_zone/2008/0214/735181.shtml main loop使用模式大致如下:loop = g_main_loop_new (NULL, TRUE);g_main_l转载 2011-10-13 11:43:29 · 26403 阅读 · 7 评论 -
GObject对象系统(宋国伟老师)
简洁明了,感谢宋国伟老师 看来好几遍了,现在转载以下。http://www.ibm.com/developerworks/cn/linux/l-gobject/index.html 还有一篇好文章:http://garfileo.is-programmer.com/p转载 2011-10-13 14:17:45 · 4246 阅读 · 0 评论 -
glib中的signal不是异步的,使用g_idle_add实现异步
调试webkit视频时,gstreamer使用了glib的对象系统。g_signal_emit后直接调用到了g_signal_connect的回调函数了。可以将glib中signal理解为同步回调。原因如下:http://blog.youkuaiyun.com/absurd/转载 2011-10-12 14:22:00 · 6878 阅读 · 0 评论 -
数组的大小
两种方法1. chromium中得到数组的大小使用如下宏【1】---- 使用数组的引用template char (&ArraySizeHelper(T (&array)[N]))[N];#define arraysize(array) (sizeof(ArraySizeHelper(array)))2.stdlib.h中_countof()宏【2】----原创 2014-03-27 13:53:36 · 1679 阅读 · 0 评论