http://www.ccw.com.cn/htm/center/prog/02_3_13_3.asp
雨亦奇
2002-3-13 11:09:55
要想高效地应用LINUX动态链接库(尤其是用户自己编写的),需要做以下工作

在《LINUX下动态链接库的创建和应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链接库中指定的函数,然后加以执行.程式中使用很少的动态函数时,这样的做法尚可.假如程式需要调用大量的动态函数,那么采用这样的编程手段将是很繁复的,所以我们必须使用一种更为聪明的办法,以减少代码量,提高工作效率.这就是现在我要举例介绍的《LINUX动态链接库高级应用》.
注:本文举的例子类似上篇文章,只是文档的内容已做相应修改,裁减了不少.示例程式ady.c和两个动态函数的源程式getdate.c和gettime.c仅修改了头文档的名字,其内容不再列出.本文使用头文档为adatetime.h.
要想高效地应用LINUX动态链接库(尤其是用户自己编写的),需要做以下工作:
一、编写合格的动态链接库头文档
C语言的头文档,可供一个或多个程式引用,里面一般定义程式所需的常量,自定义类型及函数原型说明等.其中的函数原型说明,则供编译器检查语法,用于排除引用参数时类型不一致的错误.只有编写合格的动态链接库头文档,程式员才能正确使用动态链接库内的函数.
动态链接库头文档要采用C语言标准格式,其中的动态函数原型定义,不必象上文介绍的那样用(*动态函数名)的描述形式.请看下面的例子:(每行开始的数字为所在行行号,为笔者添加,供注解使用)
1 /* adatetime.h : 纵横软件制作中央雨亦奇(zhsoft@371.net)编写, 2002-03-06. */
2
3 #ifndef __DATETIME_H
4
5 #define __DATETIME_H
6
7 /* 日期结构 */
8 typedef struct
9 {
10 int year;
11 int mon;
12 int day;
13 }DATETYPE;
14
15 /* 时间结构 */
16 typedef struct
17 {
18 char hour;
19 char min;
20 char sec;
21 }TIMETYPE;
22
23 int getdate(DATETYPE *d); /* 取当前日期 */
24 int gettime(TIMETYPE *t); /* 取当前时间 */
25
26 #endif
27

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

注:和上文的datetime.h文档比较,从该头文档第23,24行能够看到,动态函数getdate,gettime的原型定义改变了,不再使用(*getdate),(*gettime)的格式了(这种格式使用较为罗嗦).
Google