头文件和模块化编程
头文件包含
头文件的内容
主要是:函数、变量的声明,宏的定义。
包含头文件后,编译的时候就会将对应的内容全部复制到文件中。
提示:头文件主要是声明,一个工程中,函数等可以多次声明。
头文件的包含要有防止重复包含的宏(#ifndef #define #endif),因为在头文件中,会进行宏定义,宏定义不能重复定义。
头文件寻找的路径
系统默认路径、用户自定义路径
<>:只从默认路径查找
“ ”: 先从默认路径查找,后从自定义路劲查找
模块化编程的方法
将所有文件放到同一个文件中进行编译时,包含头文件路径的方法:
#include "link.h"其实就是#include "./link.h",包含头文件,就是包含头文件的路径。
将各个文件分为多个文件夹;相同文件放在一起。
例如:学生管理系统的模块化编程思维
file:存放学生信息的文件
inc:存放
.c文件src:存放
.h文件output:生成的可执行文件
在当前文件夹下,编译*.c文件
头文件的寻找
在包含头文件时,头文件要加上文件所在的相对路径或者是绝对路径。
举例:在
link.c文件中包含link.h的方法:1、相对路径
#include "../src/link.h"使用
../是因为.c编译的时候,是在.c文件中,.h文件是在他的上一级目录下的文件夹里面。2、绝对路径
#include "/home/wangzhen/mycode/test/src/link.h"
写的头文件,要让我们的
.c文件在编译时能够找到他的路径。
stm32里面的头文件添加方式
学生信息的路径
只有在读取和写入学生信息的时候,才会去寻找要写入的文件的路径。
//文件读写的绝对路径
#define FILE_PATH "/home/wangzhen/mycode/test/student/file/information.txt"
//读取信息
fp = fopen(FILE_PATH,"r");
fread(Link_new,sizeof(_Student),1,fp);
//写入信息
fp = fopen(FILE_PATH,"w+");
fwrite(Link_temp->p_next,sizeof(_Student),1,fp);
编译时的指令更改
我们要编译的是.c文件,而.c文件在inc文件夹下,编译的时候,就要修改一下指令
gcc ./inc/*.c
就是:编译当前文件夹下的 inc文件夹下的 所有.c文件
这样产生的可执行文件是:a.out,在当前文件夹下,不是我们想要的。
所以说修改指令为
gcc ./inc/*.c -o ./output
这样产生的可执行文件是:output,我们可以给生成的output加上路径。
总结
模块化编程,一般我们将各种外设的功能函数,放在不同的文件夹。
粗略的分为:.c和.h文件夹,当.c和.h放在不同的文件夹下时,要能保证能够让编译器找到.h文件所在位置,方法:包含.h路径时就使用“相对路径”或者是“绝对路径”,保证编译器能够找到文件夹的位置。

浙公网安备 33010602011771号