历史上的今天
今天是:2025年04月02日(星期三)
2021年04月02日 | 51单片机C中.c文件和.h文件
2021-04-02 来源:eefocus
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
//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中
#include//在主程序包含.h文件,不能包含.c文件
……
上述方法仍然要求每建立一个工程就需要把对应的头文件复制到工程的文件夹里,这样看来仍然是比较麻烦的,这时还有另外一中方法就是将做好的头文件放在一个文件夹中,然后将这个文件夹整体拷贝到..KEILC51INC下面,以后若需要使用某个头文件,就如使用KEIL自带的头文件一样方便了,在主函数mani()之前有一句#include 就可以在main()中使用其中的函数了。
上一篇:8051存储器总结经典
史海拾趣
|
2009年过去了,论坛在大家的努力中度过了,这个过程中管理员可是不分工作时间还是休息时间都在勤恳的为了论坛奉献自己的力量,我最先认识 的就是SOSO她的工作热情让我敬佩,对论坛来说她绝对是100%的努力,还有小志、小娜每天她们都工作台到很晚才 ...… 查看全部问答> |
|
by 千家网 jandar 作者按:面前已经陆续发表了若干个有关IP高清监控系统的基础介绍文章,与一些国外IPC产品的点评,现应一些朋友的要求,发一个IP高清监控系统的设计实例,里面有许多本人在设计过程中碰到的问题,和一些解决的方法,与广大安防从 ...… 查看全部问答> |
|
前段时间去过一个工厂测试:一个车间就一台80KVA的变压器单独供电,三相四线由变压器配电房直接拉到车间,线路大约有120米,没有补偿。在车间总进线处测量得到的数据正常: A相:有功11.55KW,功率因素0.723,视在功率16.32KVA,无功11.30KW,电压2 ...… 查看全部问答> |
|
IssueVendorTransfer USB_DEVICE_REQUEST IssueVendorTransfer执行对Device的写操作失败,GetLastError为31 我的USB_DEVICE_REQUEST是这样的 req.bmRequestType = USB_TYPE_VENDOR|USB_RECIP_DEVICE;//(0x02hDevice, &nbs ...… 查看全部问答> |
|
论坛里有兄弟能共享一下最新版StellarisWare吗,申请了好几天了,总没有反应不知道ti现在咋搞的,下载个开发包还得批准。… 查看全部问答> |
|
小弟 我卡住了好几天了 希望前辈们指教啊我这个程序是产生相位互差90度 出来的波形是 一样的 怎么回事啊 #include <msp430x14x.h>unsigned int flag1=0,flag2=0,num=0; 全局变量void Init_Clock(void) &n ...… 查看全部问答> |




