C/C++
飘飘白云
用简单的方式把事情做到极致。
展开
-
病例:不理解C/C++的函数指针
一直对函数指针的概念一知半解的,于是搜索了一把,发现几个帖子讲解不错,就帖子这里了. 病例:不理解C/C++的函数指针作者:大怪兽原文链接:http://blog.joycode.com/bigmonster/articles/4396.aspx 病人:医生,我折腾了许久,无法理解函数指针。中医:能转载 2006-09-29 10:07:00 · 2288 阅读 · 0 评论 -
深入分析Sleep(0)与Sleep(1)的区别
深入分析Sleep(0)与Sleep(1)的区别罗朝辉 (http://blog.csdn.net/kesalin)CC许可,转载请注明出处目的:有时候我们想让线程不被调度一定的时间,也就是说让线程睡眠一段时间。API 接口:在 Win32中可以调用 Sleep,SleepEx 和 SwitchToThread 三个API。VOID WINAPI原创 2012-10-11 20:08:52 · 27710 阅读 · 1 评论 -
[深入理解C++(一)]类型转换(Type Casting)
[深入理解C++(一)]类型转换(Type Casting)罗朝辉 (http://blog.csdn.net/kesalin)CC许可,转载请注明出处类型转换就是将给定类型的表达式转换为另一种类型。C++中的转型可分为两种:隐式类型转换和显式类型转换。下面将一一介绍。一,隐式类型转换隐式类型转换是C中的遗留物,在C++中并不推荐使用(C++原创 2012-10-28 21:30:48 · 17635 阅读 · 3 评论 -
[深入理解C++(二)]理解接口继承规则
[深入理解C++(二)]理解接口继承规则 罗朝辉 ( http://blog.csdn.net/kesalin )CC许可,转载请注明出处一,前言在前一篇《[深入理解C++(一)]类型转换(Type Casting)》中,我详细讲述了 C++ 中转型动作,以及使用规则。有网友说应该提及下《深度探索 C++ 对象模型》一书中的内容,其实他的意思是,要是对 C++ 对象的内原创 2012-11-06 21:36:05 · 4477 阅读 · 0 评论 -
让gcc支持成员函数模板的trick
gcc 4.7.3 不支持成员函数模板特化。同样的成员函数模板特化的代码在 VS2010中编译运行都正常,而在 gcc 4.7.3中却编译不过。可以通过一个小小的 trick 来达到近似的效果。原创 2013-07-12 22:08:44 · 6427 阅读 · 0 评论 -
在遍历中使用 iterator/reverse_iterator 进行 Erase 的用法
众所周知,在使用迭代器遍历 STL 容器时,需要特别留意是否在循环中修改了迭代器而导致迭代器失效的情形。下面我来总结一下在对各种容器进行正向和反向遍历过程中删除元素时,正确更新迭代器的用法。首先,要明白使用正向迭代器(iterator)进行反向遍历是错误的用法,要不干嘛要有反向迭代器呢(reverse_iterator)。其次,根据容器的特性,遍历删除操作的用法可以分为两组,第一组是 list 和 vector,第二组是 map 和 set。原创 2014-04-21 20:02:51 · 37617 阅读 · 6 评论 -
有关singleton的资料
双重锁:http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdf ACCU上的讨论:http://accu.org/index.php/journals/1328http://accu.org/index.php/journals/1306 ACE与Boost中singleton的不同实现:http://www.cppb原创 2010-03-25 11:33:00 · 1557 阅读 · 1 评论 -
Android多线程分析之二:Thread的实现
在前文《Android多线程分析之一:使用Thread异步下载图像》中演示了如何使用 Thread 处理异步事务。示例中这个 Java Thread 类都是位于 Framework 层的类,它自身是通过 JNI 转调 dalvik 里面的 Thread 相关方法实现的。因此要分析 Androd 中的线程,就需要分析这两层中的与线程相关的代码,这就是本文要探讨的主题。本文将把 Framework 层中的 Java Thread 称为 Android 线程/Thread,而把 dalvik 中的 Thread原创 2014-07-10 17:34:21 · 24896 阅读 · 4 评论 -
模板链接与前置声明引发的血案
有一个类模板,它会根据模板类型参数`T`的实际类型,调用不同的实例化泛型函数子去处理实际事情。在程序运行时,发现在不同的模块中用相同的类型参数来调用该类模板,得到的结果不一致,也就是说在传入同样的实际模板类型参数实例化了不同的泛型函数子。因此,可以推测在不同的模块中对同样的实际模板类型参数作了不一样的处理,导致生成了不一样的实例化。原创 2016-03-08 13:24:12 · 18312 阅读 · 3 评论 -
基于C++11模板元编程实现Scheme中的list及相关函数式编程接口
本文将介绍如何使用C++11模板元编程实现Scheme中的list及相关函数式编程接口,如list,cons,car,cdr,length,is_empty,reverse,append,map,transform,enumerate,lambda等。原创 2017-03-15 16:39:57 · 15921 阅读 · 0 评论 -
【译】VC10中的C++0x特性 part 3 : 声明之类型
Normal 0 0 2 false false false MicrosoftInternetExplorer4 <object classid="clsid翻译 2009-06-05 16:59:00 · 2145 阅读 · 0 评论 -
【译】VC10中的C++0x特性 Part 2 (2):右值引用
【译】VC10中的C++0x特性 Part 2 (2):右值引用 来源:vcblog 翻译:飘飘白云 kesalin@gmail.com (转载时请注明作者和出处。未经许可,请勿用于商业用途) 简介 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :介绍了Lambdas, 赋予新意义的aut翻译 2009-06-03 17:50:00 · 2408 阅读 · 0 评论 -
指向数据成员的指针
指向数据成员的指针飘飘白云数据成员的指针有两种含义,一种是没有绑定具体对象的数据成员指针,其地址实际是该数据成员在类布局结构中的位移;另一种是绑定了具体对象的的数据成员指针,其地址是该对象的该数据成员在内存中的地址。下面参照书中的例子用vs2005中在32位的机器上写了个测试程序。输出结果:第一行是输出8,可以理解,前面有两个整型数据(4+4 = 8),故位移为8;第二行理应输出4原创 2008-02-15 10:40:00 · 1585 阅读 · 2 评论 -
DLL中调用约定和名称修饰(__cdecl,__stdcall,__fastcall)
[转]DLL中调用约定和名称修饰(__cdecl,__stdcall,__fastcall)调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。 在C++中,为了允许操作符重载和函数重载,C++编译器往往转载 2008-05-15 10:33:00 · 4031 阅读 · 1 评论 -
明晰C++内存分配的五种方法的区别
在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在转载 2008-08-02 19:17:00 · 1719 阅读 · 5 评论 -
Using Lua with C++
Using LUA with C++原文链接:http://www.spheregames.com/index.php?p=templates/pages/tutorials作者:http://www.spheregames.com翻译:飘飘白云(http://www.cppblog.com/kesal翻译 2008-06-17 12:48:00 · 7056 阅读 · 0 评论 -
理解C语言声明的优先级规则
《Expert C Programming》(《C专家编程》中提到C语言声明的优先级规则如下:A 声明从它的名字开始读取,然后按照优先级顺序依次读取;B 优先级从高到低依次是: B.1 声明中被括号括起来的那部分; B.2 后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组; B.3 前缀操作符:星号*标识“指向...原创 2008-06-30 23:29:00 · 1957 阅读 · 1 评论 -
__declspec(noreturn)的用法
__declspec(noreturn)的用法 飘飘白云 2008.11.26 先来看noreturn在MSDN中的注解:一个函数被__declspec(noreturn)所约定,那么它的含义是告诉编译器,这个函数不会返回,其结果是让编译器知道调用约定为__declspec(noreturn)的函数之后的代码不可到达。如果编译器发现一个函数有无返回值的代码分支,编译器将会报C471原创 2008-11-27 12:26:00 · 8046 阅读 · 0 评论 -
字符常量与模板匹配问题
以下代码运行输出: A(const T&) #include #include templateclass A {public: A(const T& t) : val_(t) { std::cout << "A(const T&)" << std::endl; }private: const T& val_;};原创 2009-05-20 10:07:00 · 1439 阅读 · 0 评论 -
【译】VC10中的C++0x特性 part 1:Lambdas,auto,以及 static_assert
【译】VC10中的C++0x特性 part 1:Lambdas,auto,以及 static_assert 来源:vcblog 翻译:飘飘白云 kesalin@gmail.com (转载时请注明作者和出处。未经许可,请勿用于商业用途) 简介 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :翻译 2009-05-28 12:11:00 · 3224 阅读 · 0 评论 -
【译】VC10中的C++0x特性 Part 2 (1):右值引用
【译】VC10中的C++0x特性 Part 2 (1):右值引用 来源:vcblog 翻译:飘飘白云 kesalin@gmail.com (转载时请注明作者和出处。未经许可,请勿用于商业用途) 简介 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :介绍了Lambdas, 赋予新意义的a翻译 2009-06-01 20:43:00 · 2331 阅读 · 0 评论 -
微软C++并行库 pplx 的基本用法
前言并行计算库充分利用多核的优势,通过并行运算提高程序效率,业界有两个知名的c++并行库,一个是intel开发的TBB,一个是微软开发的PPL。TBB(Intel® Threading Building Blocks )TBB是intel用标准c++写的一个开源的并行计算库。它的目的是提升数据并行计算的能力,可以在其官网下载最新的库和文档。TBB主要功能:并行算法、任务调度、并行容器、同步原...原创 2019-01-31 13:34:58 · 19738 阅读 · 0 评论