创建图书馆
由于前面程序中的rand和bubble_sort函数很有用,您可能希望在编写的其他程序中重用它们。您可以将它们放入一个实用程序库中,以便更容易地重用它们。
每个库都由两部分组成:头文件和实际的代码文件。头文件,通常用a表示.h后缀,包含使用它的程序需要知道的有18luck手机登录关库的信息。通常,头文件包含常量和类型,以及库中可用的函数原型。输入以下头文件,并将其保存到名为util.h.
广告
/* util.h */ extern int rand();外部void bubble_sort(int, int []);
这两行是函数原型。C语言中的“extern”表示稍后将被链接的函数。的参数列表中删除参数bubble_sort.
将以下代码输入到一个名为util.c.
/* util.c */ #include "util.h" int rand_seed=10;/* from K&R -产生一个0到32767之间的随机数。*/ int rand() {rand_seed = rand_seed * 1103515245 +12345;返回(unsigned int)(rand_seed / 65536) % 32768;} void bubble_sort(int m,int a[]) {int x,y,t;为(x = 0;X < m-1;x++) for (y=0;Y < m-x-1;if (a[Y] > a[Y +1]) {t=a[Y];[y] = [y + 1]; a[y+1]=t; } }
注意,该文件包括它自己的头文件(util.h),并且它使用引号而不是符号<而且>,仅用于系统库。如您所见,这看起来像普通的C代码。注意变量rand_seed,因为它不在头文件中,所以不能被使用此库的程序看到或修改。这叫做信息隐藏。18luck手机登录添加单词静态在…前面int完全执行隐藏。
在名为。的文件中输入以下主程序c.
#include#include "util.h" #define MAX 10 int a[MAX];Void main() {int i,t,x,y;/*填充数组*/ (i=0;i < MAX;I ++) {a[I]=rand();printf (" % d \ n”,[我]);} bubble_sort (MAX);/ *打印排序数组* / printf ("--------------------\ n”);(我= 0;i < MAX; i++) printf("%d\n",a[i]); }
这段代码包括实用程序库。使用库的主要好处是主程序中的代码要短得多。
使用库编译和运行
要编译库,在命令行输入以下命令(假设您使用的是UNIX)(如果您的系统使用cc,则将gcc替换为cc):
GCC -c -g util.c
的- c使编译器为库生成一个目标文件。目标文件包含库的机器代码。在将它链接到包含主函数的程序文件之前,它不能执行。机器代码驻留在一个名为util.o.
要编译主程序,输入以下命令:
GCC -c -g main.c
这一行创建了一个名为main.o它包含主程序的机器代码。要创建包含整个程序机器代码的最终可执行文件,请输入以下命令链接两个目标文件:
GCC -o main main。o util.o
这个链接main.o而且util.o以形成一个名为主要.要运行它,键入主要.
makefile使使用库更容易一些。您将在下一页找到关于makefiles的信息。