- 博客(13)
- 资源 (4)
- 收藏
- 关注
原创 Lua bind for C 和 conf 实现
Lua ,语法简单(极像javascript), 移植性好(纯C实现), 启动速度快,空间占用小, 真不愧是潜入式脚本语言之王。 本人想拿它来做 配置文件(conf),也像加一点IoC, 就是配置脚本可以调用主程序的函数。 实现如下: repeat_macro.h #ifndef __REPEAT_MACRO_H__ #define __REPEAT_MACRO_H__ // concatenation #define CAT(a, b) PRIMITIVE_CAT(a
2010-12-01 23:16:00 919
原创 C宏 补习
C 宏, 这么熟悉的一个东西,可有那么的不清楚。是时候补一下了。 测试方式 gcc –E macro.test.c 参考资料 gcc: http://gcc.gnu.org/onlinedocs/cpp/Macros.html 也可以研究一下boost的 MACRO Metaprogram 或看Linux内核的一些宏技巧(比如list定义,once_call, 等等) 宏的细节 形式参数 形参是个有效的 C 标识符, 以逗号和可选的空格分割。 The parame
2010-11-20 03:29:00 631
原创 foreach 宏 gcc实现
这个FOREACH使用了GCC的扩展特性typeof和({}),所以只保证能在linux下玩哦。 源程序 foreach.h #ifndef _MACRO_FOREACH_H_ #define _MACRO_FOREACH_H_ #define FOREACH_USE_ITERATOR(each_var, it_begin, it_end) / for(typeof(it_begin) it = it_begin, iend = it_end; it!
2010-11-20 02:40:00 684
原创 Visitor模式实践
刚刚学习了一下设计模式的VISTOR模式,感觉里面的限制是比较大。要使用虚拟成员,固定的类层次结构。于是想实现以个更简单的visitor模 式。 使用了boost里面的function和绑定库,因为c++标准对type_info支持的太少,高性能而又可移植实现现在还想不到。所以就使用了VC对 type_info的扩充功能raw_name。 实现与源码如下: #include #include #i
2008-01-22 10:45:00 671
原创 默认参数的问题理解。
今天在CSDN上看到个 默认参数的问题 贴。 一看吓一跳,以前我对默认参数的理解和这位网友一样,对这问题很难做出解释,在DEV C++上多试了几次,终于得到答案,现拿出来分享。帖子:http://community.csdn.net/Expert/topic/4841/4841909.xml?temp=.3743402问题大概是这样:C++ primer中:“类模板的后续声明可以为模板参数
2006-06-25 18:19:00 1434
原创 uname函数初步封装
uname.h文件 :#ifndef _UNIX_UNAME_HPP#define _UNIX_UNAME_HPP/* author: piboye * email : piboye@yahoo.com.cn * date : 2006.06.3 *///Header#include // unix namespace;namespace unix {// uname of un
2006-06-03 10:04:00 1401
原创 memory.h头文件封装
#ifndef _UNIX_LIB_MEMORY_HPP#define _UNIX_LIB_MEMORY_HPP/* author: piboye * email : piboye@yahoo.com.cn * date : 2006.06.2 *///头文件#include#includenamespace UNIX {class Mem //提供内存操作,但不提供内存管理;
2006-06-02 16:28:00 4520 1
原创 一维数组的简单封装 carray模板。
#ifndef CARRAY_HEADER#define CARRAY_HEADER//这个程序取材于 Bjarne Stroustrup 的《The C++ Programming Language》,后经过加强和改正。//作者是:Piboye#include namespace piboye {templateclass carray{ char i_data[sizeof(T)*
2006-04-27 07:24:00 1610
原创 实数类型的封装 real template
实数类型一直我们容易误用的东西,特别是在比较大小的时候。经验丰富的人,可能能很容易写出这样的代码:if(lear+0.13.4) 来表示 lear==3.4 这样一个意思。但每次都这样写,麻烦,也缺少全局统一。下面这个real.h文件就是我写的一个 real模版:#ifndef REAL_TYPE_PIBOYE_HEADER#define REAL_TYPE_PIBOYE_HEADER/*
2006-04-21 13:53:00 1492
原创 C++ 引用用法
引用很多人知道,但去不常用。个人认为广泛使用,因为它可以给我们带来许多好处。例一:函数参数使用引用 void f(Class_A const & a_object);这是引用最常用到地方。以前C中是使用指针,但指针有很多弊端。 其一就是可能传入零指针,这给写函数的带来了很大的负担(因为他要考虑这种错误使用,而大家都知道异常处理是最复杂难缠的了)。 其二就是它给使用者带来很多不便,每次都
2006-02-24 08:14:00 5006 6
原创 缺省构造作为函数参数缺省值的优化
我们经常在看到这样的函数声明:int f(double,MyClass=MyClass());不仅是我们写的代码,std库中也经常这样写。仔细想想,如果这个函数多次使用这个缺省值那就会调用多次构造函数,这样一来效率就降低了。下面是我针对,这中情况写的一个Zero模板。Zero只有一个可用的接口就是value,value()会返回默认值。其中还对基本数值类型进行了特别优化,这样只是为了全面,如果直接
2005-12-29 11:48:00 1942 1
原创 强大sizeof
sizeof 对于学过 c的来说很熟悉了。 c中经常这样用: sizeof(int); sizeof(struct MyS); char str[]="goodbye!"; sizeof(str); sizeof("string "); ... sizeof在C++中发生一个变化 就是可以对 函数进行求解。 int f(void); sizeof(f); siz
2005-12-27 11:31:00 1765
原创 C++ 的一个友员错误 联想
C++的友员,应该都是知道一点,但就是很能深入。今天我在DevC++上发现各问题。程序如下#include namespace C{class D{};void f() { std::cout }}namespace B{using C::f; //使用using 声明时出错,用using namespace C;就不会?? class A{ friend void f();};}in
2005-12-19 20:55:00 1091
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人