随笔分类 - cpp
摘要:bool convertHexStringToInt(char* pstrHex, unsigned long* pResult){ if(sscanf(pstrHex, “%x”, pResult) == 0) return false; else return true;}
阅读全文
摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中。但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就提出了一种把通过FILE*来访问内存的需求,下文是针对这个需求的几个方面的尝试及其结论。
阅读全文
摘要:本文主要研究了c语言的tmpfile() 所生成的临时文件放在磁盘的什么地方了,结论就是,这个临时文件没有放在磁盘上。
阅读全文
摘要:1、 将FixedAllocator内的<重载运算符去掉,然后添加以下三个函数。 public: friend bool operator<(FixedAllocator& fa, std::size_t rhs) { return fa.BlockSize() < rhs; } friend bool operator<(std::size_t lhs, Fix...
阅读全文
摘要:原文地址:http://www.beroux.com/english/articles/boost_unit_testing/So many C++ unit testing framework exist, so why Boost Test Library? The excellent but outdated article Exploring the C++ Unit Testing Fr...
阅读全文
摘要:原文地址:http://www.beroux.com/english/articles/boost_unit_testing/?part=2 Following the crash-course introduction, let's see how to install and use Boost, plus some references.Installing BoostNow that yo...
阅读全文
摘要:原文地址:http://hi.baidu.com/hardcorn/blog/item/c8cb1b17284fe7074b90a76f.html在Win32系统上编译Boost,我们以winxp为例:boost中包含一个类似于make/nmake的工具:bjam,这是boost所推荐的编译方式,我们就用bjam来编译boost,而bjam的源码也包含在boost的源码包中。1. 先编译bjam ...
阅读全文
摘要:原文地址:http://www.cppblog.com/shuiyuan2004/archive/2008/03/29/45677.html boost 的 Test test 库中有如下的组件:Execution Monitor 一个基本用于 program 和 test program 的异常与错误检测与报告机制,Execution Monitor 调用用户提供的函数并报告所有捕获的运行时的异...
阅读全文
摘要:关于测试驱动开发, C++的库比较多, 选择是一个问题. Boost.Test是一个用于C++开发的测试框架, 类似的还有CPPUnit, 个人认为, CPPUnit过多的照搬了JUnit的框架, 有比较浓厚的Java风格, 用起来总感觉有些束缚, 不是那么native. CXXTest 我用过Symbian版本的, 好像需要Perl, 不过Symbian本身安装的时候就需要P...
阅读全文
摘要:原文地址:http://hi.baidu.com/shuiyuan2004/blog/item/7d4b43eccdf5c2d32f2e213f.htmlC++单元测试框架的比较单元测试现在已经成为标准的编程实践,但是C++缺少Java和.Net平台语言的反射机制,所以无法枚举测试方法,必须手工添加,或者使用一些特别的宏,弄得代码非常难看。Java语言单元测试是JUnit的天下,C#基本上都用NU...
阅读全文
摘要:这个IniFile是参考Delphi的Inifile来实现的。总共包括三个类:CCustomIniFile, CIniFile和CMemIniFile
阅读全文
摘要:原文地址:http://www.nuclex.org/articles/building-a-better-plugin-architecture This article will guide you through the design of a simple yet powerful plugin architecture. It requires some experience in C+...
阅读全文
摘要:原文地址:http://dita-ot.sourceforge.net/SourceForgeFiles/doc/plugin/design.htmlDesign: Create plugin architectureintroductionThere are 2 options for the plugin architecture. Option One is just like eclips...
阅读全文
摘要:1 第十七章 metaprogram1.1 Metaprogram的第一个例子书上举了一个计算3的N次幂的例子,我将其扩展为计算M的N次幂。代码如下:template<int M, int N>class Power{public: enum{ result = M*Power<M, N-1>::result};};template<int M>class Po...
阅读全文
摘要:1 第十章 实例化 1.1 On-Demand实例化 有时又被称作隐式实例化,或者自动实例化。 1.2 延迟实例化 1.3 C++中的实例化模型 1.3.1 两阶段查找 当对模板进行解析的时候,编译器并不能解析依赖型名称,于是,编译器会在POI再次查找这些依赖型名称。另一方面,非依赖型名称在首次看到模板的时候就进行查找,因此在第一次查找时就可以诊断...
阅读全文
摘要:1 第九章 模板中的名称 C++是一种上下文相关的语言:也就是说我们不能脱离他的上下文构造。 1.1 名称的分类 l 受限名称,如果前面有域解析运算符::,或者成员访问运算符(.或->),我们就称该名称为受限名称,比如this->count; l 如果一个名称依赖于一个模板参数,我们就称他为依赖名称。比如 std::vector::iter...
阅读全文
摘要:1 第十二章 特化与重载 1.1 重载函数模板 和一般的函数重载类似,函数模板也可以进行重载,比如下面的两个f,这是两个同名函数,1和2并没有关系,2不是1的局部特化。2是1的一个重载。 //1 template void g(T1 a, T2 b){ std::cout void g(T a, int b){ std::cout void g(T1 a,...
阅读全文
摘要:1 第十一章 模板实参演绎 1.1 演绎的过程 每个实参-参数对的分析都是独立的;因此,如果最后得出的结果是矛盾的,那么演绎的过程将失败。 我们来看个例子: template typename T::ElementT at(T const& a, int i) { return a[i]; } void g1(int* p) { int x = a...
阅读全文
摘要:1 第八章 深入模板基础 1.1 参数化声明 1.1.1 联合模板 联合模板也是允许的,比如: template union AllocChunk{ T object; unsigned char bytes[sizeof(T)]; }; 1.1.2 函数模板的缺省调用实参 template void fill(Array*, T const& ...
阅读全文