c语言 头文件
2015-11-12 16:18
561 查看
一直以为C语言头文件的作用和 java中的import,php中的import是一样的,是引入方法的作用,但这是错的。
找了很多资料,终于找到一个正确的解读:
C++/C编译器在扫描到一条函数调用语句时首先应当知道该函数的原型或定义,函数原型一般都放在头文件中,函数定义则放在源文件中,当源文件或头文件通过#include指令包含另一个头文件的时候,编译预处理器用头文件的内容取代#include伪指令。这就是说,头文件的所有内容最终都会被合并到某一个或某几个源文件中,如此将每一个包含的头文件递归地展开后形成的源文件就叫编译单元。
(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需按照头文件中的接口声明来调用库函数,而不必关心接口是怎么实现的。连接器会从库中提取相应的代码,并和用户的程序连接生成可执行文件或者动态连接库文件;
(2)头文件能加强类型安全检查(不是引入方法)。如果某个接口被实现或被使用时的方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担;
(3)头文件可以提高程序的可读性(清晰性)。
这种模块化的含义,是能够单独编译,减少编译时间,只编译有改动的文件。所以说在编译的时候,不能单单的 gcc main.c 就万事大吉了
还要编译你用到的源文件 gcc main.c XXX.c 等,他不会自动去寻找需要的源文件。
来源
找了很多资料,终于找到一个正确的解读:
C++/C编译器在扫描到一条函数调用语句时首先应当知道该函数的原型或定义,函数原型一般都放在头文件中,函数定义则放在源文件中,当源文件或头文件通过#include指令包含另一个头文件的时候,编译预处理器用头文件的内容取代#include伪指令。这就是说,头文件的所有内容最终都会被合并到某一个或某几个源文件中,如此将每一个包含的头文件递归地展开后形成的源文件就叫编译单元。
(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需按照头文件中的接口声明来调用库函数,而不必关心接口是怎么实现的。连接器会从库中提取相应的代码,并和用户的程序连接生成可执行文件或者动态连接库文件;
(2)头文件能加强类型安全检查(不是引入方法)。如果某个接口被实现或被使用时的方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担;
(3)头文件可以提高程序的可读性(清晰性)。
这种模块化的含义,是能够单独编译,减少编译时间,只编译有改动的文件。所以说在编译的时候,不能单单的 gcc main.c 就万事大吉了
还要编译你用到的源文件 gcc main.c XXX.c 等,他不会自动去寻找需要的源文件。
来源
相关文章推荐
- 深入 Qt5 信号槽新语法 重载函数 函数指针 c/c++风格类型转换 带有默认参数的槽函数
- C++编程值得参考的博客资料
- C语言三种参数传递方式
- Prime C++ Exercise 2.11 编写程序,要求用户输入两个数——底数(base)和指数 (exponent),输出底数的指数次方的结果。
- C++primer第五版第九章学习笔记
- 在C++中怎么判断一个double型数据的小数点部分是否为零
- C++ primer 第五版 答案
- C++primer第五版第八章学习笔记
- 7.c/c++程序员面试宝典-循环语句
- C++中string型转int型
- 《C++ Primer》 Stanley B. Lippman 第五版 练习题
- C语言积累1
- C++ 链表的递归逆转和循环逆转
- QML与C++混合编程详解
- 第一章C++对C的扩展(Externsion)--(7)new/delete
- C++primer第五版第七章学习笔记
- C语言练习作业(三)
- C语言笔记(数组地址一些细节)
- Understanding lvalues and rvalues in C and C++
- 第一章C++对C的扩展(Externsion)--(6)引用