头文件(h文件) 为了方便模块函数被其他模抉调用,编写头文件,保存: 宏定义 常量定义 ◇数据类型定义 外部变量声明 函数声明(函数原型要求) ◇正确使用头文件可提高代码的可读性、可维护性、以及 开发效率 ◇在.C文件中通过命令包含.h头文件。例如: #include stdio. h #inc lude " mydata. h ◇包含自定义的头文件时,一般用
为了方便模块函数被其他模块调用,编写头文件,保存: 宏定义 常量定义 数据类型定义 外部变量声明 函数声明(函数原型要求) 正确使用头文件可提高代码的可读性、可维护性、以及 开发效率 在.c文件中通过命令包含.h头文件。例如: #include <stdio.h> #include "mydata.h" 包含自定义的头文件时,一般用" " 6
文件模块(.C文件) ◇编译单元 ◇在编译一个.C文件时,预处理器首先递归包含 头文件,形成一个含有所有必要信息的单个源 文件。 每个.c文件都对应一个编译单元,生成一个目 标文件 ◇连接程序 把各个目标程序中产生的符号联系起来,构成 个可执行程序
编译单元 在编译一个.c文件时,预处理器首先递归包含 头文件,形成一个含有所有必要信息的单个源 文件。 每个.c文件都对应一个编译单元,生成一个目 标文件 连接程序 把各个目标程序中产生的符号联系起来,构成 一个可执行程序。 7
模央编峄链接 编译 progl.C :/ al.h,., b1. h pI 编译 可执行 h.. c2. h prog 链接 文件 编译 progM.c a h, b. h.c. h prom.o w量
8 prog1.c a1.h, …, b1.h prog2.c a2.h, …, c2.h progM.c a.h, b.h, c.h …… prog1.o 编译 prog2.o 编译 progM.o …… 编译 链接 可执行 文件
头文件编写 ◇头文件由三部分内容组成 ◇版权声明和版本信息(起始处) 预处理块 ◇定义和申明 ◇结构和枚举类型定义 ◇ typedef定义和宏定义 ◇具名常量定义 ◇外部变量声明 ◇函数申明 ◇头文件应该只用于声明,不应该包含 “占据存储空间的变量或函数”的定义
头文件由三部分内容组成: 版权声明和版本信息(起始处) 预处理块 定义和申明 结构和枚举类型定义 typedef定义和宏定义 具名常量定义 外部变量声明 函数申明 头文件应该只用于声明,不应该包含 “占据存储空间的变量或函数”的定义 9
包合(# include)头文件 ◇头文件可以嵌套包含 A.h包含B.h,B.h包含C.h,。。。 ◇避免循环包含(为什么),避免头文件被 多重复包含 ◇虽然函数、变量的声明都可以重复,不会影响 桯序编译和运行,但会增加编译处理的时间 当头文件中包含结构的定义、枚举定义等一些 定义时,这些定义是不可以重复的,必须通过 一定措施防止发生
头文件可以嵌套包含 A.h包含B.h,B.h包含C.h,。。。 避免循环包含(为什么),避免头文件被 多重复包含 虽然函数、变量的声明都可以重复,不会影响 程序编译和运行,但会增加编译处理的时间 当头文件中包含结构的定义、枚举定义等一些 定义时,这些定义是不可以重复的,必须通过 一定措施防止发生 10