2006年8月21日星期一

如何创建一个C语言库

今天终于学会了如何创建一个C语言的库,就是把自己写的函数不放在主程序里面,而是放在独立的头文件和其他C文件中。这样可使主程序清晰,而且代码维护起来更容易。

比如写了个求中位数的函数median(),希望在主程序中调用median()但不出现它的代码,可以在主程序头部写上#include "median.h",median.h要和主程序放在一个目录下。median.h中的内容就只一行,是median()这个函数的原型声明,例如 extern int median(int [], int);,而median()函数的代码写在另一个文件median.c中。

编译和连接主程序时,需要多加一个文件median.c,即要用gcc -o main main.c median.c 。用上面说的方法,就可把自己写的函数作成C语言的库了。

另 一种方法是把所有东西都写到一个头文件median.h中,前面是函数原型声明int median(int[], int);,接着是函数的代码。这样编译和连接时,就无须增加median.c,只需 gcc -o main main.c。这样虽然只有一个文件,但是如果代码较多就会让头文件比较乱,所以把头文件和真正的代码分开是创建库的更合理的方法。

上面的总结主要参考了How C Programming WorksEasyBMP的源代码。记下此笔记,供以后查询。

7 条评论:

花自飘零 说...

简单明了,正好对我有帮助:)
如果是在编译器的情况下,我只能直接点COMPILE,会提示打不到这个函数,这时该怎么办呢?
我用的Dev-C++

Pan Yongzhi 说...

Devcpp怎么用不知道了,但它用的也是gcc,Windows下也可以用gcc在命令行下编译连接。

Pan Yongzhi 说...

你当天刚注册就到这里了……

花自飘零 说...

你给回复啦,谢谢:)
想了好久,才想起了注册的用户名和密码
一直用的JAVA,现在突然要我们学C++和C,
正好借签一下你的宝作.

Pan Yongzhi 说...

汗,水木一哥们看到这文后还鄙视我呢。

花自飘零 说...

鄙视你不知道Devcpp啊,HOHO^-^
重装了系统,把你的空间地址丢失了,想不到你留了言,又可以拜读你的宝作啦~~

Pan Yongzhi 说...

不是,是鄙视我只懂这么初级的东西。是我评论你评论过的就发你邮箱了吧。