您的位置:首页 > 编程语言 > C语言/C++

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

2016-02-03 09:59 344 查看
先说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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息