C程序中头文件相互包含精华

C程序中头文件相互包含精华(网摘小结) 收藏
.h中一般放的是同名.c文件中定义的变量、数组、函数的声明,需要让.c外部使用的声明。

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 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文件

 

通常一个C程序工程按功能可以分成多个模块, 一个模块通常由两个文档组成一个头文件 *.h, 对模块中的数据结构和函数原型进行描述;另一个为C文件*.C , 对数据实例或对象进行定义,以及函数算法的具体实现,如I2C.C, SPI.C, DAC.C, DISPLAY.C 等,为了文件的调用,我们要为每个模块定义一个头文件,以I2C.C 来说,定义I2C.H。

 

#ifndef GRAPHICS_H                   

   

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值