基于AT89C51教程之软件篇(一)头文件的故事

先说C文件,众所周知在使用keil编写程序过程中,主程序和绝大部分函数的编程都放在.c文件。

对于H文件,小编怕自己没有多少经验,就努力谷歌了一下其他大神们对于H文件的看法,我归纳了以下几点:

1、 在头文件中放函数的声明而不是定义。
2、 应当用ifndef/define/endif结构产生预处理块。
3、 用 #include “xxx.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
4、 用 #include <xxx.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
5、 在头文件中编写代码会导致同样的二进制被多个模块反复编译内联,导致程序体积上升,导致重复编译,导致编译速度下降
6、 写入.h文件要考虑的另一个问题是如果你要将程序作为库发布出去,代码写在.h中会泄露你的代码。

———————————————

事实上,在程序量不是很大的情况中根本看不出将自编函数另放头文件、C文件中的便利性,在实际使用过程中,一个程序在哪里对电脑来说意义不大,为啥?
它只要按照规则找得到就行,谁管你在哪里。而对于我们而言,函数被编写出就有代表了一个功能,将定义放在头文件中除了告诉电脑,用到了什么功能你就跟着我给你的地址自己去找。同时,也让我们在一段时间之后再看程序也能很快的理解程序的结构。大量重复的事情我们不该常干,将它们独立写出来等以后要用了那就拿来用即可。
说了这么多那就说说格式
常见的H文件格式
`
#ifndef(标示)
#define(标示)

void a();
void b();//声明
struct a {};//结构体

#endif`
标示在网上有很多种
例如:delay.h=
__DELAY_H
_DELAY_H_
DELAY_H
PS:亲测在keil中都是可以用,所以各位看官见仁见智吧

——————————————

eg:
delay.h文件
`
#ifndef DELAY_H
#define DELAY_H

void a();
void b();
struct a {};

#endif`

——————————————

ifndef/define/endif结构
ifndef XXX_H意思是”if not define XXX.h”
主要的功能是告诉计算机,结构中间包含的声明若重复出现,就可置之不理,若没有便可拿来调用。主要是避免了计算机对于重复声明报错的问题。

当然如果你感觉我说的不明白,可以看看这篇文章能不能懂
http://blog.csdn.net/abc5382334/article/details/18052757

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值