OO in C(4): C语言中的面向对象思想(2)

转载 2004年09月27日 21:19:00
 

不好意思,好像我们公司的安全软件限制了上传文件的大小

 

3CALLBACK函数。

我觉得这是C语言的一个创举,虽然它很简单,就象如何把鸡蛋竖起来一样,但是你如果没想到的话,嘿嘿。如果说静态入口函数实现了一个可管理的宏观的话,CallBack就是实现了一个可进化的微观:它使得一个函数可以在不重新编译的情况下实现功能的添加!但是在最最早期的时候,也有蛮多人持反对态度,因为它用了函数指针。函数指针虽然灵活,但是由于它要访问内存两次才可以调用到函数,第一次访问函数指针,第二次才是真正的函数调用。它的效率是不如普通函数的。但是在一个不太苛刻的环境下,函数调用本身就不怎么耗时,函数指针的性能又不是特别糟糕,使用函数指针其实是一个最好的选择。但是函数指针除了性能,最麻烦的地方就是会导致程序的“支离破碎”。试想:在程序中,你读到一个函数指针的时候,如果你愣是不知道这个函数指针指向的是哪个函数,那个感觉真的很糟糕。(可以看后面的文章,要使用先进的程序框架,避免这样的情况)

三、           EventMessage<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

看了上面的描述,相信大家多少有些明白为什么要使用EventMessage了。具体的函数调用会带来很多的问题(虽然从效率上讲,这样做是很好的)。为了提高程序的灵活性,EventMessage的办法产生了。用名字解析的办法代替通常的函数调用,这样,如果双方对这样的解析是一致的话,就可以达到一个统一。不过EventMessage的作用还不仅仅是如此。

EventMessage还有建立进程间通信的功能。进程将自己的消息发给“控制中心”(简单的就是一个消息队列,和一个while循环不断的取消息队列的内容并执行),控制程序得到消息,分发给相应的进程,这样其他进程就可以得到这个消息并进行响应。

EventMessage是很灵活的,因为你可以随时添加或者关闭一个进程,(仅仅需要添加分发消息的列表就可以了)EventMessage从程序实现上将我觉得是一样的,只不过概念不同。Event多用于指一个动作,比如硬件发生了什么事情,需要调用一个什么函数等等。Message多用于指一个指示,比如什么程序发生了什么操作命令等等。

四、           小结

其实编程序和写文章一样,都是先有一个提纲,然后慢慢的丰富。先抽象化得到程序的骨架,然后再考虑各个方面的其他内容:程序极端的时候会发生什么问题?程序的这个地方的功能现在还不完善,以后再完善会有什么问题?程序是不是可以扩展的?

本系列文章是我这些阶段的一些心得,目的是抛砖引玉,希望能和大家交流,得到更多的知识。Liyuming1978@163.com (这个信箱以前发了一个文章 C优化之路,现在都快成垃圾信箱了,呵呵,网络的力量真是强大呀)

OO in C(4): C语言中的面向对象思想(2)

3.CALLBACK函数。我觉得这是C语言的一个创举,虽然它很简单,就象如何把鸡蛋竖起来一样,但是你如果没想到的话,嘿嘿。如果说静态入口函数实现了一个可管理的宏观的话,CallBack就是实现了一个可...
  • Tunix126
  • Tunix126
  • 2006-11-22 08:20:00
  • 793

OO in C(4): C语言中的面向对象思想

C语言中的面向对象思想 经常听见别人说面向对象的程序设计,以前在学校上课的时候,也有开面向对象程序设计这门课。可是不幸的是,这些都是以C++,甚至VC++为基础的。而更加不幸的是,多年以来我一直是一个...
  • zuozl
  • zuozl
  • 2004-10-08 13:14:00
  • 1179

OO in C(4): C语言中的面向对象思想(1)

 C语言中的面向对象思想 经常听见别人说面向对象的程序设计,以前在学校上课的时候,也有开面向对象程序设计这门课。可是不幸的是,这些都是以C++,甚至VC++为基础的。而更加不幸的是,多年以来我一直是一...
  • foxcai
  • foxcai
  • 2004-09-27 21:18:00
  • 1137

OO in C(4): C语言中的面向对象思想(1)

 C语言中的面向对象思想 经常听见别人说面向对象的程序设计,以前在学校上课的时候,也有开面向对象程序设计这门课。可是不幸的是,这些都是以C++,甚至VC++为基础的。而更加不幸的是,多年以来我一直是一...
  • Tunix126
  • Tunix126
  • 2006-11-22 08:19:00
  • 1247

c语言中1<<n是什么意思

1先转成二进制 在左移n位 然后补0 比如 1 n=1 即 1*2 , n=2 既1*2*2 ,n=3 既1*2*2*2 就是进行二进制的翻倍。 二进制每左移一位就是*2,两位就是*2*2,三...
  • feiyu_diary
  • feiyu_diary
  • 2017-12-14 14:22:38
  • 507

C语言库函数C语言库函数

  • 2009年05月07日 13:56
  • 60KB
  • 下载

c语言define的用法

1、#define的简单定义作用 #define相当于一个简单的文本替换,对于普通的常量定义,我就不必多说了,但是对于类似于函数定义的形式,可能会出现错误,例如: #define Add(x,y)...
  • abc5382334
  • abc5382334
  • 2013-09-19 00:44:59
  • 3402

C语言中.h和.c文件解析 教程

  • 2010年06月10日 12:16
  • 75KB
  • 下载

C语言中a=b=c,a=b==c,a==(b=c),a==(b==c)的简单分析

最近一个同学在看java的代码时问的一个关于C语言的问题,看着其实挺简单的,可是我也是好久没有碰C语言了当时就把我给难住了,后来又分析了一下,现在把它写出来 代码如下 #include main...
  • u013372441
  • u013372441
  • 2016-03-12 15:06:14
  • 3557

在C语言中单独用a[5]是什么意思

int a[5]; 中的那个5表示这个数组最多可以包含五个元素, 在引用的时候是a[0] ~ a[4]( a[n] 下标从0开始,到n-1为止), 这5个元素, 至于a[5], 对于这个定义是的使用是...
  • nuanxin_520
  • nuanxin_520
  • 2015-07-12 10:26:48
  • 388
收藏助手
不良信息举报
您举报文章:OO in C(4): C语言中的面向对象思想(2)
举报原因:
原因补充:

(最多只允许输入30个字)