OOC-GCC

LGPL
C/C++
跨平台
2011-03-29
dameng

这是一个模板,是一些宏的集合,针对跨平台的GCC设计[0.11版以后的与VC9编译器兼容]

只用纯粹的C实现简单的OO的机制而不必了解冗杂的C++的语法,

其实现了简单的"类"的模拟,析构与构造,以及对单根继承的模拟.

在很大程度上,可以模拟完成大部分OO中较为重要的特性.

另有简化版ooc-lite( http://code.google.com/p/ooc-lite/ )及相关文档,

提供测试实例及设计思路详解.

关于OOC-GCC中宏的使用

类的设计(模块化的编程应在.h文件中使用)

 
假定有一个名为"A""类"

CLASS
(A){
   
......  这里为实例成员
    STATIC
(A);
   
......  这里是类成员(实际结构体为struct _StA,并被重定义为StA)
};

假定有一个名为"B"的继承了上面"B""类"

CLASS_EX
(A,B){
   
.......
    STATIC_EX
(A,B) ;
   
.......
};

注意继承时,前面是父类,后面是要定义的子类.

类的构造与析构(模块化的编程应在.c文件中使用)

static int A_reload(A *THIS,void *p){
        THIS
->.... 这里使用第一个参数来初始化实例成员
       
return 0;
}
static int A_reloadSt(StA *THIS,void *p){
        THIS
->.... 这里使用第一个参数来初始化类成员
       
return 0;
}
static int A_unload(A *THIS,void *p){
        THIS
->.... 这里使用第一个参数来析构实例成员
       
return 0;
}
ASM
(A,A_reload,A_unload,A_reloadSt,NULL)
注意上面最后一个参数为类成员的析构
使用NULL是为了说明无需某个函数时,可以不设置

类的使用

普通类"A"的使用
A
*a=NEW0(A);  //声明第一个A的实例时调用StA和A的构造,
               
//以后再声明A的实例只调用A的构造
StA *fA=ST(a);
fA
->someFunc(a,someParam);
DEL0
(a);       //销毁A的实例时调用A的析构
               
//当销毁显存的最后一个A的实例时,
               
//调用A和StA的构造

带有继承的类"B"的使用
B
*b=NEW0(B);   //注意父类的构造会自动调用
StB *fB=ST(b);
fB
->someFunc(b,someParam);
StA *fA=ST(b);
fA
->someFunc(b,someParam); 使用父类的方法
DELETE0
(b);  //无需知道b的具体类型时A或B,都会调用正确的析构
         
//如果是A的指针,则调用A的析构,如果是B的指针则调用B和A的析构
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

SpagoBI不支持动态指定指标的原因分析

第一步:使用SQL查询,某日期区间,某几个频道的接触度 select count(userid) as ooc, channelname as channelname, dt as dt from tvlog_test.tvlog_tcl where dt between '2015-09-01' an...

2015/09/10 15:28
76
1
模板引擎Mustache

这是一个有多种语言实现的模板引擎。官网是[http://mustache.github.io/](http://mustache.github.io/)。 [Web模板引擎——Mustache](http://www.iinterest.net/2012/09/12/web-template-en...

2014/06/21 22:00
53
0
c语言实现多态

转载自:http://www.cnblogs.com/haippy/archive/2012/12/31/2840501.html 上面一篇博客中写了《如何实现 C 的函数重载》,本文将进一步讲讲如何实现 C 语言的继承和多态,其实大致的思想已经...

03/10 18:08
4
0
centos 6.5 安装gcc 4.9.1

下载源码包 ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.1/gcc-4.9.1.tar.gz 解压 $tar -xvzf gcc-4.9.1.tar.gz $cd gcc-4.9.1 下载依赖库 $./contrib/download_prerequisites $cd .. $mkdir gcc-bu...

2014/07/17 22:39
915
0
gcc详解

为你详解Linux安装GCC方法 下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/ 查看Changes: http://gcc.gnu.org/gcc-4.5/cha...

2016/02/20 14:25
37
1
移植zlib1.1.4

1. 编译 zlib 库 由于 zlib 库的 configure 脚本不支持交叉编译选项,所以 我们只好使用符号链接把 gcc 指向我们的交叉编译器 armlinux-gcc,在编译完后再改回来即可. A. 把 gcc 指向我们的交叉...

2015/12/22 19:32
18
0
ubuntu10.4系统下GCC降级安装 升级安装GCC

ubuntu10.4环境下默认的GCC版本为4.4.3,由于编译环境的GCC版本为3.2.2,想在ubuntu上使用编译环境版本的GCC,故需要将GCC版本降级到3.2.2。GCC在新版本加入了一些高级特性,导致从GCC4.4.3不...

2013/10/05 13:10
315
0
ubuntu12.04 安装VMware WorkStation8.03出问题

问题1:before you can run vmware several modules must be compiled 问题2:gcc:error trying to exec 'cc1' execvp no such file or directory gcc and linux kernel header must be ins...

2013/07/01 22:27
248
0
wxWidgets3.1.2在Windows+TDM-GCC环境下编译错误的处理

大概两年前,为了跳出微软VS开发环境的大坑,转战GNU,急需一个开源的GUI库。几番权衡之下,选择了和MFC相似度更高的wxWidgets,一番使用下来,虽然不如VS那么完善全面,但也基本可以应付绝大...

01/02 20:52
61
0
Linux安装gcc编译器详解(CentOS 6.5 64位系统)

本次安装针对CentOS 6.5 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器。 使用yum安装gcc 对于配备了yum的Linux发行版而言,安装gcc编译器就变得so ea...

2015/05/09 07:50
616
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部