当程序的业务逻辑越来越复杂,代码量越来越多,所有代码写在一个源文件中会影响代码编写、阅读、团队合作,因此为了避免这些问题,可以按功能把代码编写到不同源文件中,然后给每个源文件编写一个辅助说明的头文件
头文件写啥
1、头文件卫士
2、结构、联合、枚举的类型设计
3、全局变量的声明 在对应的源文件中定义
4、函数声明 在对应的源文件中实现
5、宏常量和宏函数
注意: 头文件总的内容能在不同的源文件中重复出现而不会导致冲突,为了检查头文件的函数声明与源文件中的函数定义是否匹配
多文件编译
单独的每个源文件生成目标文件
gcc -c file.c -> file.o
把所有目标文件合并在一起生成可执行文件(将file.o等一系列.o文件合并成一个可执行文件main)
gcc -o file.o ... main
Makefile编译脚本
Makefile编译脚本中记录的是项目编译指令的集合,通过make指令批量执行 打开命令:vi Makefile 调用: make
一般文件中有两大部分内容:
定义变量:
CC=gcc
FLAG=-Werror -Wall
OBJS=main.o cons.o tools.o
TARGE=cons
定义编译目标:
all:$(OBJS)3
$(CC) $(OBJS) -o $(TARGE) && ./&(TARGE)
%.o:%.c (第一种写法)
$(CC) $(FLAG) -c $<
//clean命令
clean:
rm -rf *.h.gch
rm -rf $(OBJS) $(TARGE)
//clean 调用是使用make clean
第二种写法(精准定位)(现已用#注释掉了)
#main.o:main.c cons.h tools.h
# $(CC) $(FLAG) -c main.c
#cons.o:cons.h cons.c tools.h
# $(CC) $(FLAG) -c cons.c
#tools.o:tools.h cons.h
# $(CC) $(FLAG) -c tools.c
注意事项: 1、使用Tab缩进 2、编译目标可以调用其他编译目标,也可以依赖文件 3、make会根据文件的最后修改时间判断是否需要重新编译.c文件 4、默认只执行第一个编译目标 可以通过make命令调用编译目标
|