.c和 h文件
更新时间:2024-04-14 12:54:01 阅读量: 综合文库 文档下载
- .c和.cpp推荐度:
- 相关推荐
.C .H 文件
预处理阶段:编译器把C文件作为一个单元,首先读C文件 此时当遇到头文件时,就会在所有路径中搜寻读取到以后,根据头文件中的定义等等进行处理,包括处理宏、变量、声明等,最后生成一个目标文件 当做临时文件,里面存储了以上那些处理的结果。 编译阶段:在刚才生成的文件中,所有的变量等都成为一个全局变量的类型。同时根据生成文件的处理结果,将所有的函数编译成二进制。按照目标文件格式生成目标文件。 连接阶段:将上一步生成的各个目标文件根据某些参数,连接成最终的可执行文件。主要的工作就是重新定位各个目标文件的函数、变量等。
分别在头文件和C文件中做怎样的处理
(一般来说,在头文件个C文件中做以下的声明和定义) 头文件:函数、变量声明 声明宏 结构体声明 等 C文件:变量定义、函数实现 等
1、 如果在头文件中定义一个函数体,同时有多个C文件引用他,并编译多个C文件,
在编译时会将其生成目标文件连接成一个可执行文件。在每个引用头文件的C文件中都会有这个函数的代码。此时如果没有把函数定义为局部变量,在连接时就会发现有多个相同的函数,就会发生错误。
2、 如果在头文件中定义全局变量 并将其赋予了初值。那么在多个引用此头文件的C
文件里面也会出现相同变量名的拷贝。关键的是,这个变量被赋予了初值,会被编译器放到DATA段,最后在连接阶段,会在DATA里面出现多个相同的变量。切无法将其统一,也就是仅为此变量分配一个空间,而不是多份空间。假定这个变量在头文件没有赋初值,编译器就会将之放入 BSS段,连接器会对BSS段的多个同名变量仅分配一个存储空间。故而只在头文件中对变量进行声明,而不是定义。 3、 如果在C文件中声明宏,结构体,函数等。那么在另一个C文件引用时,就需要
再一次定义。如果需要改动C文件的一个声明,就可能出现忘记修改其他基础C文件中的声明,就会出问题。
4、 在头文件声明结构体,函数等。当需要把代码封装成一个库,并让其他人也可以利
用你的代码。但又不想公布全部的代码,此时就可以提供头文件,让人们看里面的函数原型,便可以知道怎么调用你的函数。
对于.h文件(头文件)和.c文件在本质上没有太大的区别。头文件,内含函数声明、宏定义、结构体定义等内容。.c文件是程序文件,内含函数实现,变量定义等内容。
举例说明:在同一文件目录下,定义了C文件和头文件。并在头文件下声明了某个函数,在C文件#include了这个头文件。并在C文件中定义了这个函数的实现。那么在main函数运行时就能找到这个函数。
假定编译程序编译myproj.c(其中含main())时,发现它include了mylib.h(其中声明了函数void test()),那么此时编译器将按照事先设定的路径(Include路径列表及代码文件所在的路径)查找与之同名的实现文件(扩展名为.cpp或.c,此例中为mylib.c),如果找到该文件,并在其中找到该函数(此例中为void test())的实现代码,则继续编译;如果在指定目录找不到实现文件,或者在该文件及后续的各include文件中未找到实现代码,则返回一个编译错误.其实include的过程完全可以\看成\是一个文件拼接的过程,将声明和实现分别写在头文件及C文件中,或者将二者同时写在头文件中,理论上没有本质的区别。 【动态方式】
关于调用顺序,C语言要求函数使用之前,必须声明。那么就会出现当一个函数需调用同一个C文件下的其它函数,切形成多级的嵌套时,便需要考虑复杂的调用顺序。但如果首先使用#include将同名的头文件调用,则不必考虑调用顺序的麻烦。
正在阅读:
.c和 h文件04-14
2019年高考英语二轮专题复习训练专题4语法填空和短文改错第1讲重点1考点1素能强化Word版含答案09-21
2011-2012学年八年级数学同步练习题:三角形全等的条件(一)09-06
应收账款管理本科毕业论文04-15
线性代数测试试卷及答案04-13
XX-XX学年小学三年级英语教学工作总结04-15
2017年公交客车市场深度调查研究与发展前景分析报告06-03
lass弦乐音源说明书 - 图文03-08
大学英语三级语法大全05-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 文件
- 密码
- 植物生理学8 植物生长生理 - 图文
- 中国文明史上尔雅满分答案
- eNSP2.0模拟PPPoE实验
- 2016春北交《钢结构房屋设计》在线作业一
- 信息安全试验报告 - 图文
- 地灾项目试运行监测报告
- 学校食堂营养餐管理工作计划
- 大型峰会论坛全程策划案(经典全案)
- google hacking高级搜索方法
- 二元一次方程组集体备课
- 如何提高学生学习信息技术课的兴趣
- 玉米废水调试计划
- 带地下室高层建筑嵌固端的选择与分析
- 2014-15班美文鉴赏选集3(《听听那冷雨》读后感)
- 自用擒涨停板心得+抓涨停指标+准确率90%以上
- 公共关系学多选题及答案
- 减轻学生课业负担的自查报告
- 湖北2012年自考《现代自然地理学》课程考试大纲
- 2014-2015年江苏省苏州市吴中区木渎中心小学五年级(上)