模块化编程和多文件
模块化设计和背后的原理
.c可执行文件; 每个.c 都独立编译成.o,然后多个.o链接成一个可执行文件; .o里面有一个装配清单,装配空间根据这份清单来链接成一个可执行文件
别人编写了个启动的程序,会自动找一个main函数并且去调用它;
gcc -c -o a01.o a01.c;//单文件目标的编译;
gcc -o build a01.o b01.o;//多文件目标的链接;
我们可以有一个省事的方式就是gcc -o build a01.c b01.c; 这样编译器会发现是.c结尾,那么他会自动编译这两个文件为.o;
头文件
多文件编程中,c语言只管这个函数的名字,只要有这个函数的名字,那么这个函数就可以执行;所以我们需要一个函数的声明:extern void abc();来检查函数使用是否符合规范;为了让b同学来写这个函数的声明我们引入了:XXX.h;来做头文件;
头文件在编译的作用就是在一个文件编译时,把这个头文件打开,依附于.c文件进行执行;
头文件在整个模块化编程的作用是:对外提供一些。。。让编译器晓得哪里出错了;
防止多次使用一个头文件
#ifndef TEXT_H
#define TEXT_H
#endif //TEXT_H
模块化如何声明接口
两个可执行文件定义了同名的函数,我们应该用static来分辨哪一个是对外的,哪一个是对内的;