Linux & 标准C语言学习 <DAY14>
阅读原文时间:2023年07月08日阅读:1

一、头文件

    头文件可能会被任意源文件包含,意味着头文件中的内容可能会在多个目标文件中存在,要保证合并时不要冲突

    重点:头文件只编写声明语句,不能有定义语句

    1、头文件应该写什么

        a.全局变量声明

        b.函数声明

        c.宏常量、宏函数

        d.类型重定义  //typedef

        e.结构体、枚举、联合等类型设计声明

    2、头文件的编写规则

        1.为每个.c文件写一份.h文件,.h文件是对它对应的.c文件的说明

        2.如果需要用到某个.c文件中的变量、函数、宏时,只需要把该文件的.h文件导入即可

        3. .c文件也要导入自己的.h文件,目的时为了让定义与声明保持一致

        头文件的相互包含:

            假如a.h包含了b.h的内容,而b.h中又包含了a.h的内容,这时就会产生头文件的互相包含,无法编译通过

            解决办法:把a.h中需要的b.h的内容,和b.h中需要a.h的内容提取出来,额外再写一个c.h

    3、Makefile:

        是由一条条编译器指令组成的可执行文件,叫做编译脚本

        在终端执行 make 命令就会自动执行Makefile脚本中的编译指令,它可以根据文件的修改时间和依赖关系来判断哪些文件需要编译

        需要一个名字叫做 Mikefile 的编译文件

        Makefile的编译规则:

            1.如果这个工程没有编译过,那么我们的所有.c文件都要编译并被链接

            2.如果这个工程的某几个.c文件被修改,那么我们只编译被修改的.c文件,并链接目标程序

            3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的.c文件,并链接目标程序

        一个最简单的Makefile脚本格式:

        执行文件:依赖

            编译指令

        被依赖的目标1:依赖的文件

            编译指令

        被依赖的目标2:依赖的文件

            编译指令

            …