在C语言中,通常将程序的源代码分为.h文件和.c文件两类:

  • .h文件(也称头文件)通常包含程序所需的函数、变量、类型和宏的声明,以便在其他文件中使用。
  • .c文件则包含这些函数、变量、类型和宏的实现或定义。

因此,可以将.h文件看作是对应的.c文件的接口或者声明文件。在编译时,编译器将这些文件合并在一起,生成最终的可执行文件。

.h文件和.c文件的关系是,.h文件定义了程序中各种函数、变量和类型的接口,而.c文件实现了这些接口中定义的具体功能。在实现功能时,.c文件通常需要包含相关的.h文件以获得函数和变量的声明。通过这种方式,.h文件和.c文件协同工作,共同构建了一个完整的程序。

在实际编写程序时,通常将一些公用的函数、变量和类型的声明放在.h文件中,以便在其他文件中使用。例如,如果在一个.c文件中需要使用另一个.c文件中定义的函数,那么在前一个.c文件中需要先包含后一个.c文件对应的.h文件,以获得函数的声明。

以一个简单的例子来说明.h文件和.c文件的关系。假设我们有一个包含加法和减法函数的计算器程序,其中加法和减法函数分别定义在addition.c和subtraction.c两个文件中。这时我们可以将这两个函数的声明放在calculator.h文件中:

// calculator.h
int addition(int a, int b);
int subtraction(int a, int b);

然后在addition.c和subtraction.c中分别实现这两个函数:

// addition.c
#include "calculator.h"int addition(int a, int b)
{return a + b;
}
// subtraction.c
#include "calculator.h"int subtraction(int a, int b)
{return a - b;
}

最后,在主程序中包含calculator.h文件,就可以使用加法和减法函数了:

// main.c
#include <stdio.h>
#include "calculator.h"int main()
{int a = 10, b = 5;printf("%d + %d = %d\n", a, b, addition(a, b));printf("%d - %d = %d\n", a, b, subtraction(a, b));return 0;
}

通过这种方式,.h文件和.c文件协同工作,共同构建了一个完整的程序。在编译时,编译器会将这些文件合并在一起,生成最终的可执行文件。这种分离编译的方式有助于提高编译效率和程序的可维护性。

C语言编程之.H文件与.C文件的关系相关推荐

  1. 知识贴!单片机C语言编程之.H文件与.C文件的关系

    一..H文件与.C文件的关系: 迄今为止,写过的程序都是一些很简单的程序,从来没有想到要自己写.H文件,也不知道.H文件到底什么用,与.C文件什么关系.只是最近写键盘程序,参考别人的程序时,发现别人写 ...

  2. 易语言编程之CE过驱动保护(ACE)调试教程

    易语言编程之CE过驱动保护(ACE)调试 很多时候,驱动保护很让人头疼, 一用CE,就提示开了程序要结束, 你一搜到地址鼠标右键想看看访问和写入的代码地址,找基址时候,游戏就退出了, 这个教程教你 可 ...

  3. UNIX环境高级编程之第4章:文件和文件夹-习题

    4.1 stat函数是尾随符号链接的,所以用stat替换lstat不会显示符号链接的信息 4.2 在一个目录下先再shell中输入umask shell进程再进行创建文件的操作.其权限抖都会被屏蔽 4 ...

  4. C语言编程之求0—7能组成的奇数个数

    问题描述:使用C语言编程实现求0-7所能组成的奇数个数. 程序源码: #include<stdio.h> void main() { long sum=4,s=4; int j; for( ...

  5. C语言编程之用ellipse画椭圆

    问题描述:请使用ellipse函数画椭圆. 程序源码: #include "stdio.h" #include "graphics.h" #include &q ...

  6. JAVA编程基础(四)开启Java语言编程之旅

    上一节单元测试的答案: 1. b 2. d 3. e 4. a 5. e 6. c 7. b 8. f 9. b 了解java对象的结构 更多精彩请阅读 东陆之滇的csdn博客:http://blog ...

  7. C语言编程之用circle画圆形

    问题描述:学用circle画圆形. 程序源码: #include<graphics.h> void main() {int driver,mode,i; float j=1,k=1; dr ...

  8. C语言编程之用line画直线

    问题描述:学习使用line画直线. 程序源码: #include<graphics.h> void main() {int driver,mode,i; float x0,y0,y1,x1 ...

  9. Python语言编程之LEGB变量作用域法则

    Python 在查找"名称"时,是按照 LEGB 规则查找的: Local-->Enclosed-->Global-->Built in Local    指的就 ...

最新文章

  1. 概要设计阶段--组装测试计划
  2. CentOS 7 firewall防火墙命令
  3. windows下面怎么github ssh 公钥,然后克隆项目
  4. tableau获取筛选器值_认识Tableau中的筛选器
  5. 信息学奥赛一本通C++语言——1049:晶晶赴约会
  6. 2018年全球电动车销量破200万辆 特斯拉Model 3销量居首
  7. php列表代码怎么做的,php项目实战:代码讲解之订单列表问题
  8. PaddleOCR 文本检测训练+推理模型转换教程
  9. Android8.1 Camere1+HAL3获取分辨率和芯片支持不一致(二十一)
  10. MyBatis学习笔记(4)-resultMap多对多映射使用总结
  11. div+css实现背景透明
  12. 惯性导航解算程序C++实现
  13. 读取cpu温度的api_获取传感器温度-cpu 温度篇
  14. 黑苹果HIDPI开启问题
  15. JavaScript梗图详解
  16. linux 下载工具
  17. c语言spoc测验成绩比重,SPOC混合教学模式在C语言程序设计课程的应用
  18. 支付宝《神奇海洋》素材
  19. TortoiseSVN文件及文件夹图标不显示解决方法
  20. ASCII 碼: 转义字符,正则表达式,特殊字符,模式匹配

热门文章

  1. linux主机账户权限,【干货】linux账号和权限管理
  2. 各种滤波器的设计实现
  3. 图像识别开源_看看开源图像识别技术
  4. Spring Data JPA 之 理解 Persistence Context 的核心概念
  5. Bootstrap手机端下拉菜单(铺满)
  6. rdesktop架构解析(RDP协议分析)
  7. Android中Webview显示全屏拉伸图片
  8. 【detectron】绘制loss曲线和pr曲线
  9. 异步mysql java_java – 异步http客户端(ning)创建更多线程?
  10. 介绍Jackson JsonParser解析json