访问电脑版页面

导航:老古开发网手机版51单片机51单片机Keil C51编程

51单片机C中关于.c文件和.h文件的关系与区别

导读:
关键字:
h文件,C文件,51单片机,

  C文件,是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。

  文件是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。

  51单片机C中关于.c文件和.h文件的关系与区别

  1)h文件作用

  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文件即可,我们没有听说过#include “delay.c”这类的程序,同时也不提倡使用这个形式。

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

  externvoidDelayms(unsigned int n); #endif

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

  //for crystal11.0592M

  voidDelayms(unsigned int n) {

  unsignedinTI,j; for(j=n;j》0;j--) for(i=112;i》0;i--); }

  在主程序main.c中

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

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

来源:网络整理   作者:PoisonApple  2017/12/27 16:49:00
栏目: [ 51单片机Keil C51编程]

相关阅读

几种码制转换 BCD TO HEX,HEX TO BCD ,BIN TO HEX

让Ultra Edit和Keil结合的更紧密

在KEIL C51上仿真完了,怎样生成HEX文件去烧写??

在Keil c51调试中,如何查看外部存储器XDATA?

Keil C51中如何实现代码优化?

C51中 INT 转换为 2个CHAR?

proteus与keil的完美结合(没有开发板,让你也学的爽!)

Keil C51编译错误总结

[转载]C51中断处理过程

C51 的重入问题 WARNING L15: MULTIPLE CALL TO SEGMENT(转)

keil 7.0编译出现:error C316: unterminated conditionals

51单片机CO2检测显示程序解析

那位大虾能告诉我C51 的printf()函数有什么用?

Keil C51单片机中变量的使用方法解析

MCS51单片机程序设计时堆栈的计算方法解析

C51单片机的几种常用延时程序设计

在Keil c51调试中,如何查看特殊寄存器?

volatile的用法

在Keil c51调试中,如何查看全部256bytes的内部RAM?

SBUF=0x65,c=SBUF结果为c=0???