C语言代码组织基础


C语言使用静态库或者是动态库的形式组织每个人写的代码文件

静态库的文件为.o结尾的文件
有min.c max.c t1.c 三个文件
max.c

int max(int num1, int num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}

min.c

int min(int num1, int num2) {
if (num1 < num2) {
return num1;
} else {
return num2;
}
}

t1.c

#include <stdio.h>
#include "max.c"
#include "min.c"
int main() {
int a = 100;
int b = 22;
int c = max(a, b);
printf("the max value is %d\n", c);
int d = min(a, b);
printf("the min value is %d\n", d);
}

当t1.c需要使用max.c min.c 文件时可以在头文件直接引入对应的c文件。但是如果max.c和min.c的提供方不想提供源码就可以使用静态库的形式即提供.o文件使用人员。

编译max.o,和min.o文件
gcc -c max.c
gcc -c min.c
在t1.c中使用时就不需要引入max.c和min.c这两个文件了只需要gcc编码时添加既可
gcc min.o max.o t1.c

但是这种方式有一点不好,使用max min两个函数时无法查看函数原型和文档,所以在这里我们可以编写两个.h的头文件
max.h 和 min.h

max.h
int max(int num1, int num2);
min.h
int min(int num1, int num2);
在t1.c中引入 头文件
#include <max.h>
#include <min.h>

这样提供方可以提供.o和.h文件供使用者查看和使用。

但是这么做还是有一点不好,因为每次编译时都需要指定gcc max.o min.o两个.o文件 如果静态库一多,多到上千个。那么编译起来将会非常麻烦。所以这里提供一种Makefile 写好编译文件使用make工具对文件进行编译。

Makefile

#this is make file
main.out:max.o min.o t1.c
gcc max.o min.o t1.c -o main.out

max.o:max.c
gcc -c max.c

min.o:min.c
gcc -c min.c

make 内部使用的也是gcc编译
main.out:max.o min.o t1.c
main.out 要编译的可执行文件 冒号后的max.o,min.o,t1.c代表要使用到的文件。如果发现没有max.o文件。
则会使用下面的语句
max.o:max.c
gcc -c max.c
生成max.o文件 如果max.c 文件有修改或者max.o文件没有,都会执行这一条语句编译出max.o文件.

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告