原创 51单片机C语言学习笔记7:关于.c文件和.h文件

2009-4-8 20:45 6267 9 9 分类: MCU/ 嵌入式

51单片机C语言学习笔记7:关于.c文件和.h文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


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__


 


extern void Delayms(unsigned int n);


#endif


 


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


#include <delay.h>


//for crystal <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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


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


……


 


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


 


参考资料:


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


http://www.unixresources.net/linux/clf/program/archive/00/00/33/65/336569.html 


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


http://www.vckbase.com/document/viewdoc/?id=1607


3过马路,左右看


http://www.vckbase.com/document/viewdoc/?id=1606


4.c .h文件的不同


http://hi.baidu.com/mfantastic/blog/item/d6fddd39793494f73a87ce0c.html


5C51包含头文件方法


http://blog.ednchina.com/eleclike/52862/message.aspx

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条