Summary
1)头文件(.h)是源文件(.c)的 接口
定义文件。接口指的是可被其余文件拜访的 函数或者数据
。如果 a.c 中想应用 b.c 中定义的函数或变量,就能够通过 b.h 来应用,b.h 中则声明了 b.c 中的函数和变量。
2)include 中(<>)和(””)的区别:#include <header.h>
,指的是在编译系统文件中查找头文件#include "header.h"
,指的是先查找以后工程文件夹,再查找编译系统文件夹
3)头文件的一些 规定
:
- 头文件中只做
函数申明
和变量申明
(不做具体定义) - 头文件中
能够定义数据类型
(typedef,struct,union,enum) - 一个头文件能够对应于多个源文件(
少数状况一对一
) - 不要应用 #include 蕴含源文件
4)再论全局变量:
-
一般全局变量
- 源文件中定义的全局变量能够在其余任意源文件中进行应用,如果其余源文件中定义了同名的全局元素,则会产生反复定义谬误。(因为即便没有通过 extern 申明,不可间接可见,但实质各自的作用域依然是全局的)
- 可应用
extern
关键字在头文件中申明,并在其余文件中应用(如果不申明,则在其余源文件中不可见) - 留神,应用 extern 申明时的类型和变量名都必须统一,且
不能够给初始值
(否则就会报反复定义谬误)。
-
动态全局变量
static
润饰的全局变量只能在以后源文件中应用
- 无奈通过 extern 关键字申明,也就没有方法在其余文件中应用
5)函数申明
语句 默认自带 extern
关键字润饰;类型定义必须放在头文件里
,仅仅是类型申明无奈创立变量。
6)static 函数和 static 全局变量的行为是统一的。static 关键字润饰函数使得函数具备 文件作用域
;动态函数 无奈
在其余文件中被调用;函数设计时就须要思考是否在其余文件中应用。
多文件程序设计
问题:理论工程开发中,所有的代码都是写在同一个文件中吗?
答:很显然不是。理论的工程开发中,通常是不同工程师或不同的团队负责不同的模块,而后各自的模块组合起来实现整个工程。
多文件编译链接:
问题:不同文件之间如何互相拜访各自的程序元素?
多文件之间的互相拜访:
-
每个文件能够定义性能
接口
(可被其余文件拜访的函数或数据
)源文件
:代码实现文件,后缀为.c头文件
:源文件的接口定义文件,后缀为.h
-
当须要应用其余文件提供的性能时
,蕴含对应的头文件-
语法:
#include <header.h>
,指的是在编译系统文件中查找头文件
#include "header.h"
,指的是先查找以后工程文件夹
,再查找编译系统文件夹
-
再论全局变量:
-
一般全局变量
- 源文件中定义的全局变量能够在其余任意源文件中进行应用
- 可应用
extern
关键字在头文件中申明,并在其余文件中应用(如果不申明,则在其余源文件中不可见)
-
动态全局变量
static
润饰的全局变量只能在以后源文件中应用
- 无奈通过 extern 关键字申明,也就没有方法在其余文件中应用
本文总结自“狄泰软件学院”唐佐林老师《C 语言入门课程》。
如有错漏之处,恳请斧正。