原因
-
通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只
要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库
功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。 -
头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件
中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错
的负担
规范
在开头和结尾应该加上防止多次引用的宏
//headfilie.h
#ifndef _HEADFILE_H_#define _HEADFILE_H_//声明#endif
未初始化的全局变量将会放到elf
文件的.bss
段中,.bss
不占据实际的磁盘空间,只在段表中记录大小,在符号表中记录符号。当文件加载运行时,才分配空间以及初始化。因此可以多次声明。
参考博客
- 在源文件(.c)和头文件(.h)中声明和定义的区别——C语言
- bss段不占据磁盘空间的理解
- extern的使用详解(多文件编程)——C语言