头文件的编写

前言

关于头文件编写的介绍和技巧


一、头文件中应该写什么:

问题:头文件可能被任何的源文件包,意味着头文件的内容会在多个目标文件中存在,合并时要保证不能冲突
重点:头文件中只能编写声明语句,不能有定义语句
全局变量声明 extern int num;
函数声明
宏常量
宏函数
typedef 类型重定义
结构、联合、枚举的类型声明

头文件的编写规则:
1、为每个.c文件写一份.h文件,.h文件是对.c文件的说明
2、如果需要使用某个.c文件中的变量、函数、宏、结构体…,只需要把该.c文件的.h文件导入即可使用
3、.c文件也需要导入它的.h文件目的是为了让声明与定义一致

头文件的相互包含:
假如a.h包含了b.h,b.h又包含a.h,这种情况就叫做头文件的相互包含,会导致编译错误

当确认变量、函数名已经定义且导入,但是依然报错:未定义 XXXXX,先考虑是否头文件卫士写错,再考虑是否头文件相互包含

解决方法:从a.h中把需要到的b.h内容提取出来,从b.h中把需要到的a.h内容提取出来,放入新编写的c.h

二、Makefile

Makefile是由一系列编译指令组成的可执行文本文件,也叫编译脚本
在终端执行make命令就会自动执行Makefile文件中的编译指令,它可以文件的修改时间来判断哪些文件需要编译,哪些文件不需要重新编译,根据依赖情况判断哪些文件先编译、哪些后编译,从而提高比编译效率

编译规则:
1、如果这个工程没有编译过,则所有.c文件都要编译并被链接成可执行程序
2、如果某几个.c文件被修改,则此次只编译被修改的 c 文件,并链接可执行程序。
3、如果某个头文件被改变了,依赖这几个头文件的.c文件,全部重新编译并链接

一个简单的makefile脚本
执行目标:依赖
编译指令
被依赖的目标1:依赖的文件
编译指令

clean:
rm…

通用的Makefile
CC=gcc
BIN=mail2
STD=-std=gnu99
OBJ=main.o phone_book.o tools.o
LIB=-lm
FLAG=-Wall -Werror

mail2:$(OBJ)
$(CC) -o $(BIN) $(OBJ)

%.o:%.c
$(CC) $(STD) $(FLAG) -c $< -o $@

clean:
rm $(BIN) $(OBJ)


总结

以上,有错误,还请指正

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值