自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

原创 POD_STL跨平台移植时碰到的一些问题

我很希望POD_STL成为一套不使用任何预编译宏隔离就能兼容多种主流编译器的代码。这个目标很有挑战性,需要每行代码严格符合C++标准,并且考虑各种编译器的不同实现特点。事实上,我还没见过哪套STL代码达到过这个目标,POD_STL有可能会是世界上第一个。POD_STL在开发过程中是在VS2013环境下编译调试的。近期,有项目组将其移植到了Linux环境,用GCC编译。在移植的过程中遇到了一些问

2015-05-12 10:51:18 562

原创 没有模板代码膨胀的STL:四、一些讨论和个人心得

总目录一、设计目标与实现思路二、使用方法与注意事项三、开发者指南四、一些讨论和个人心得前面3篇文章都是针对POD_STL项目本身的介绍。这篇文章则发散讨论下其他方面的内容。全功能的去模板化STL是可能的吗?有些人对POD_STL限制容器元素类型的做法颇有微词。但实际上,即使是标准STL也对容器元素类型有很多限制,而POD_STL只是放弃了对一部分很少使用的类

2015-05-11 07:36:03 1052 2

原创 没有模板代码膨胀的STL:三、开发者指南

总目录一、设计目标与实现思路二、使用方法与注意事项三、开发者指南四、一些讨论和个人心得上一篇文章《使用方法与注意事项》描述了在项目中应用POD_STL的方法。本篇文章则是针对想要加入POD_STL开发工作的朋友的。当然,开发者也应当知晓项目的设计思路和使用需求。所以,想参与开发的朋友不光要阅读这篇文章,也应当仔细阅读两面两篇:《设计目标与实现思路》和《使用方法与注意事项》。

2015-05-11 07:34:07 836

原创 没有模板代码膨胀的STL:二、使用方法与注意事项

总目录一、设计目标与实现思路二、使用方法与注意事项三、开发者指南四、一些讨论和个人心得在上一篇文章《设计目标与实现思路》中。我介绍了POD_STL的总体设计思路。而这篇文章则是给想要在项目中使用POD_STL的人员看的。本文描述了使用者需要注意的内容。目录结构POD_STL根目录下有VS2013的工程,这主要给开发者使用,使用者可以不必关心。POD_

2015-05-11 07:31:43 790

原创 没有模板代码膨胀的STL:一、设计目标与实现思路

总目录一、设计目标与实现思路二、使用方法与注意事项三、开发者指南四、一些讨论和个人心得公司里很多项目因为模板代码膨胀的问题而放弃甚至禁止使用STL。但是,STL又确实可以给编码带来诸多便利。在此背景下,我发起了这个开源项目:POD_STL。当前已经完成了vector、string、list、deque、set、multiset、map、multimap等容器,以及一些基

2015-05-11 07:25:32 2279 1

原创 STLport源代码中的一个BUG

STLport是世界上使用最广泛的开源STL实现,很多人通过学习STLport源代码来了解STL中的实现细节。STLport中的copy算法用于将一个容器中指定范围的元素拷贝到另一个容器中。它是这么实现的(原始代码中有很多编译宏隔离,为了表述方便,只展开预编译选项中有效的代码,下同):-cpp代码1//

2015-05-11 07:19:39 811

原创 使用STL导致.o增大的真相

我对于使用STL导致软件体积增大的原因一直都有疑问:STL的模板实例化固然会带来代码膨胀,但是STL的代码都是经过长年的精心优化的,绝大部分函数都很小,为何会导致.o增大如此之多呢?于是,我决定自己动手探究一番。我使用的STL版本为SGI STLPort 5.2,编译器为GNU C++ 3.4.4,都是当前项目开发使用的主力工具。首先,我针对项目代码中最常用的map容器,写

2015-05-11 07:13:30 1005

原创 让C++回调函数可以同时支持成员函数和静态函数的方法

回调函数是分层软件系统中经常使用的一种技巧,当下层需要调用上层的接口时,一般都使用回调函数来破除循环依赖。在纯C语言环境中,回调函数用起来很简单——一个函数指针而已。但是当大家都用上C++以后,回调函数碰到了点麻烦:很多模块接口都是成员函数,怎么回调?一些较有经验的程序员会说:成员函数也是可以取函数指针的。没错,但是如果当一个事件触发时,需要依次调用很多个模块的接口呢?(这个场景在“观察者

2015-05-11 07:06:55 1677

原创 万恶的void*指针类型转换

大家都知道:用一个基类的指针指向一个派生类的对象是合理的,然而很多人却忽略了这样做的大前提:必须使用规范的指针转换过程。最近要添加一个功能,上层代码为此新增了一个虚函数接口。我一看,此虚函数所在的类也是新增的,底层驱动代码以前没有使用过这个类。class IDmIAL_VER5{public:    virtual WORD IAL_SetRldRamCondition

2015-05-11 07:05:10 10973

CPCW2015-39

Popular Computer Week 2015-39

2015-10-08

空空如也

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

TA关注的人

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