html 头文件含义,头文件和源文件的区别是什么?
头文件和源文件的区别
头文件和源文件在本质上没有任何区别。 只不过一般:后缀为 .h 的文件是头文件,内含函数声明、宏定义、结构体定义等内容。后缀为 .c 的文件是源文件,内含函数实现,变量定义等内容。而且是什么后缀也没有关系,只不过编译器会默认对某些后缀的文件采取某些动作。这样分开写成两个文件是一个良好的编程风格。
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:
①预处理阶段
②词法与语法分析阶段
③ 编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制机器码,生成各个目标文件 (.obj文件)
④连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关 的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格 式信 息。(生成.exe文件)
编译器在编译时是以C文件为单位进行的,也就是说如果你的项目中一个C文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目标文件进行函数与变量的重定位,生成最终的可执行文件,在PC上的程序开发,一般都有一个main函数,这是各个编译器的约定。
(main .c文件 目标文件obj 可执行文件exe )
有了这些基础知识,再言归正传,为了生成一个最终的可执行文件,就需要一些目标文件,也就是需要C文件,而这些C文件中又需要一个main函数作为可执行程序的入口,那么我们就从一个C文件入手,假定这个C文件内容如下:#include "mytest.h"
int main(int argc,char **argv)
{
test = 25;
printf("test.................%d/n",test);
}
头文件内容如下:
int test;
现在以这个例子来讲解编译器的工作:
1.预处理阶段:编译器以C文件作为一 个单元,首先读这个C文件,发现第一句是包含一个头文件,就会在所有搜索路径中寻找这个文件,找到之后,就会将相应头文件中再去处理宏,变量, 函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将h文件中所有的内容全部扫描进这个当前的C文件中,形成一个中间“C文件”
2.编译阶段,在上一步中相当于将那个头文件中的test变量扫描进了一个中间C文件,那么test变量就变成了这个文件中的一个全局变量,此时就将所有这个中间C文件的所有变量,函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件,在这种格式的目标文件中进行各个全局变量,函数的符号描述,将这些二进制码按照一定的标准组织成一个目标文件。
3.连接阶段,将上一步成生的各个目标文件,根据一些参数,连接生成最终的可执行文件,主要的工作就是重定位各个目标文件的函数,变量等,相当于将个目标文件中的二进制码按一定的规范合到一个文件中。
更多web开发知识,请查阅 HTML中文网 !!
html 头文件含义,头文件和源文件的区别是什么?相关推荐
- C++中头文件(.h)和源文件(.cpp)都应该写些什么,头文件中的预编译语句作用,命名空间和头文件的区别与联系,内部链接和外部链接
1. C++中头文件(.h)和源文件(.cpp)都应该写些什么: 总结下来就是头文件写的就是类的声明(包括类里面的成员和方法的声明)和函数的声明,但一般来说不写出具体的实现.对应的同名(可以不同名,但 ...
- C++ 中头文件(.h)和源文件(.cc)的写法简述
C++ 中头文件(.h)和源文件(.cc)的写法简述 用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 .下面就非常简洁明了地谈谈头文件(.h)和源文件(.cc)应该怎么写. 头文件( ...
- C++中头文件(.h)和源文件(.cpp)都应该写些什么
原文出处:https://www.cnblogs.com/fenghuan/p/4794514.html 头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等, ...
- C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)
头文件(.h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体的实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句(如下 ...
- C++中的头文件(.h)和源文件(.cc)
头文件(,h): 写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但一般来说不写出具体实现. 在写头文件时需要注意,在开头和结尾处必须按照如下样式加上预编译语句: #ifn ...
- C++ 头文件和源文件
from:https://www.cnblogs.com/fenghuan/p/4794514.html C++中头文件(.h)和源文件(.cpp)都应该写些什么 头文件(.h): 写类的声明(包括类 ...
- C++ 笔记(25)— 理解 C++ 中的头文件和源文件的作用
1. C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件: .cpp 文件,被称作 C++ 源文件,里面放的都是 C++ 的源代码 .h 文件,被称作 C++ 头文件,里面放的也是 C++ ...
- c 中头文件和源文件的区别是什么
区别:头文件是".h"文件,提供接口:源文件是".cpp"文件,提供实现.编译器规定源文件必须包含函数入口,即main函数:而头文件不得包含函数入口,头文件不可 ...
- C++头文件和源文件,编译过程
源文件如何根据#include来关联头文件 1.系统自带的头文件用尖括号括起来,这样编译器会在系统文件目录下查找. #include <xxx.h> 2.用户自定义的文件用双引号括起来, ...
最新文章
- 关于 UDP Hole Punching 的资料
- mybatis中传入参数的几种方式
- maven jetty运行时,js无法保存
- Google AJAX 搜索 API
- LAMP下http跳转到 https
- c++ 深度拷贝和浅度拷贝
- bash大括号参数扩展(Parameter Expansion)
- html怎么快捷复制粘贴,如何快速复制粘贴 最全复制粘贴攻略教程大全
- 分享|2022城市大脑发展白皮书(附PDF)
- python求解一元二次方程考虑复数_Python学习笔记:求解一元二次方程
- jqwidgets简单技术
- mysql创建表格例子_Mysql创建表例子 | restcy 技术博客
- 剑指Offer(二):替换空格
- C++ MFC 文字转语音
- 2017西安网络赛B_Coin
- hdu-5643 King's Game(打表)
- 三星内存编码_三星内存编号命名揭秘
- K8s落地实践之旅 —— Pod(豌豆荚)
- JDK1.8特性之StringJoiner
- 《大数据之路:阿里巴巴大数据实践》-第2篇 数据模型篇 -第8章 大数据领域建模综述