1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明;

2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h)。

2)h文件里应该有什么

常量,结构,类型定义,函数,变量申明。

3)h文件不应该有什么

变量定义, 函数定义。

4)extern问题

对于变量需要extern;

对于函数不需要因为函数的缺省状态是extern的.如果一个函数要改变为只在文件内可见,加static。

5)include包含问题

虽然申明和类型定义可以重复,不过推荐使用条件编译。

#ifndef _FILENAME_H,

#define _FILENAME_H

……

#endif

6)应该在那儿包含h文件

在需要的地方.比如某个提供接口的h文件仅仅被1.c文件需要,那么就在1.c文件里包含。

编写的程序一般会有.H文件和相对应的.C文件,.H文件是声明所用,.C文件是其函数实现部分。在调用时只要包含.H文件即可,我们没有听说过#i nclude "delay.c"这类的程序,同时也不提倡使用这个形式。

在delay.h文件中:                //对调用的函数声明

#ifndef __DELAY_H__

#define __DELAY_H__

extern void Delayms(unsigned int n);

#endif

在delay.c文件中:                 //函数实现部分

#i nclude

//for crystal 11.0592M

void Delayms(unsigned int n)

{

unsigned int i,j;

for(j=n;j>0;j--)

for(i=112;i>0;i--);

}

在主程序main.c中

#i nclude //在主程序包含.h文件,不能包含.c文件

……

上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一中方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到..KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函数mani()之前有一句#i nclude 就可以在main()中使用其中的函数了。

参考资料:

1)h文件里变量(函数)申明用不用extern

2).c文件和.h文件的概念与联系

3)过马路,左右看

4).c 和 .h文件的不同

5)C51包含头文件方法

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念:

(1)模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;

(2)某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;

(3)模块内的函数和全局变量需在.c文件开头冠以static关键字声明;

(4)永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:

int a = 5;

#include "module1.h"

#include "module1.h"

#include "module1.h"

以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这个世界上从来不需要这样的程序。正确的做法是:

extern int a;

#include "module1.h" int a = 5;

#include "module1.h"

#include "module1.h"

这样如果模块1、2、3操作a的话,对应的是同一片内存单元。

51单片机c语言中有file,51单片机C语言中.c文件和.h文件的关联相关推荐

  1. 51单片机c语言试题及答案,单片机C语言期末考试题..

    单片机C语言期末考试题..,单片机的c语言应用程序设计,单片机c语言编程,51单片机c语言程序100例,单片机c语言,单片机c语言编程思想,c语言开发单片机,c语言单片机程序,新概念51单片机c语言教 ...

  2. 【51】51单片机C语言中.c文件和.h文件的关联

    1)h文件作用 1 方便开发:包含一些文件需要的共同的常量,结构,类型定义,函数,变量申明: 2 提供接口:对一个软件包来说可以提供一个给外界的接口(例如: stdio.h). 2)h文件里应该有什么 ...

  3. 51单片机c语言学习感想,51单片机实训心得体会

    [www.hywsbj.com--心得体会] 单片机实训有哪些心得体会呢?下面是小编为大家收集的资料,欢迎阅读哦. 51单片机实训心得体会 通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥 ...

  4. 51单片机c语言工作手册,51单片机C语言编程手册

    51单片机C语言编程手册 1 第一章 介绍 这是一本关于Intel 80C51 以及广大的51 系列单片机的书这本书介绍给读者一些 新的技术使你的8051 工程和开发过程变得简单请注意这本书的目的可不 ...

  5. 51单片机c语言试题及答案,单片机考试复习题及答案

    <单片机考试复习题及答案>由会员分享,可在线阅读,更多相关<单片机考试复习题及答案(14页珍藏版)>请在人人文库网上搜索. 1.选择题1.主频为12MHz的单片机他的机器周期为 ...

  6. 51单片机c语言内存使用,51单片机C语言编程之内存优化

    原标题:51单片机C语言编程之内存优化 最常见的是以下两种 ① 超过变量128后必须使用compact模式编译 实际的情况是只要内存占用量不超过 256.0 就可以用 small 模式编译 ② 128 ...

  7. 51单片机c语言编程100,51单片机C语言编程100例.doc

    51单片机C语言编程100例.doc 目 录实例3用单片机控制第一个灯亮3实例4用单片机控制一个灯闪烁认识单片机的工作频率3实例5将 P1口状态分别送入P0.P2.P3口认识I/O口的引脚功能4实例6 ...

  8. 51单片机c语言版清华大学,51单片机c语言版.docx

    51单片机(呼吸灯)C语言版 基于单片机与PWM的呼吸灯设计 实训指导教师:班级: 设计人姓名:设计日期:设计地点:完成时间: 本设计是基于单片机的原理与接口设计,采用单片机I/O 口,加以C 语言编 ...

  9. 51单片机C语言code定义,51单片机数组的定义方法(code与data的作用)

    数组前不加"code"或"data",则默认将数组存放在程序存储器中: code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中 ...

最新文章

  1. react 组件连动效果_react-redux应用之独立组件联动实例
  2. 2018 react 大会_React Conf 2018的经验教训
  3. 机器人抓取领域相关数据集
  4. copy模块中的copy与deepcopy的区别
  5. CnPack 使用的组件命名约定
  6. PHP服务器环境打开配置文件
  7. UDP协议抓包分析 -- wireshark
  8. php基于数组的分页实现
  9. 2015-12-01 存储过程
  10. 因为太难而被禁用的17道Google面试题
  11. 解决方案:如何防止数据重复插入
  12. html如何在第二个网页中显示第一个网页参数_接口测试平台代码实现5:亲手创造第一个首页...
  13. python 微信扫码登录_python实现微信第三方网站扫码登录(Django)
  14. 锐捷云终端计算机,锐捷RG-RCM1000-Office智能云终端控制器
  15. 深入浅出理解 Java回调机制(异步)
  16. 理解和应用共线平面束
  17. EDIUS中的图片该如何进行剪裁
  18. Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04
  19. 亿级流量电商详情页系统实战-1.小型电商网站的商品详情页的页面静态化架构以及其缺陷
  20. 期刊会议排名、信息检索网站推荐以及IEEE Latex模板下载

热门文章

  1. Linux中的HOME目录和home目录???
  2. html遮罩层怎么做,CSS中怎么让一个div成为遮罩?
  3. 关于FTP主动模式与被动模式的一点理解
  4. 【JAVA基础☞探针技术】Java探针-Java Agent技术
  5. 想做个磁力链搜索引擎 2
  6. Windows 10 下 转移MySQL 8.0的数据库文件夹
  7. 抽象数据类型 (ADT)
  8. 1.使用main函数的参数,实现一个整数计算器;2、写冒泡排序可以排序多个字符串
  9. 昔日菜鸟已成今日老鸟
  10. Java程序员不可不知的几个网站,你去过几个?