您的位置:首页 > 编程语言 > C语言/C++

C语言代码组织基础

2015-09-21 13:25 288 查看

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文件.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言