9848|7

168

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

自己写C语言中的头文件 [复制链接]

       C语言中的头文件可以自己写吗?(转自电脑圈圈)
       一些初学C语言的人,不知道头文件(*.h文件)原来还可以自己写的。只知道调用系统库函数时,要使用#i nclude语句将某些头文件包含进去。其实,头文件跟.C文件一样,是可以自己写的。
       头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#i nclude语句将头文件引用时,相当于将头文件中所有内容,复制到#i nclude处。
      为了避免因为重复引用而导致的编译错误,头文件常具有:
     #ifndef LABEL
     #define LABEL
   //代码部分
    #endif 的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h, 那么可以这样使用:
   #ifndef __HARDWARE_H__
   #define __HARDWARE_H__
   //代码部分
   #endif
   这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
       另外一个地方就是使用include时,使用引号与尖括号的意思是不一样的。使用引号(“”)时,首先搜索工程文件所在目录,然后再搜索编译器头文件所在目录。而使用尖括号(<>)时,刚好是相反的搜索顺序。假设我们有两个文件名一样的头文件hardware.h,但内容却是不一样的。一个保存在编译器指定的头文件目录下,我们把它叫做文件I;另一个则保存在当前工程的目录下,我们把它叫做文件II。如果我们使用的是#i nclude ,则我们引用到的是文件I。如果我们使用的是#i nclude “hardware.h”,则我们引用的将是文件II。笔者以前就遇到过一个同事问,为什么他修改了那个头文件里面的内容,好象跟没有修改一样?就是因为他有两个一样的头文件(就像我们刚描述的那样),他是使用#i nclude引用的,而他修改时,却是当前工程所在的目录下的那个文件。

[ 本帖最后由 zl_felix 于 2010-5-29 11:21 编辑 ]
此帖出自单片机论坛

最新回复

这个东西确实难。  详情 回复 发表于 2014-9-27 14:33
点赞 关注
个人签名无论什么时候,做什么事情,要思考
 

回复
举报

168

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
防重复定义时加下划线的标识符作为特殊标识,和普通的定义区分开,防止重名
譬如:
#ifndef _UARTH_            //如果没有定义
#define _UARTH_            //那么定义标志
                //下面跟着一堆正常的定义
   
#endif                 //结束这个if[/#]

因为很多头文件可能被多个文件包含,很多时候会出现重复定义的错误

而采用这种写法时,当重复包含这个文件时,第一次编译到#ifndef _UARTH_时条件满足,if里面的宏定义执行一次,
再次编译到#ifndef _UARTH_时条件不满足,if里面的宏定义就不会再执行了,也就不会出现重复定义的错误了
此帖出自单片机论坛
 
个人签名无论什么时候,做什么事情,要思考
 

回复

168

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
H文件里应该有的:常量,结构 类型定义 函数声明 变量声明,
      不应该有的:变量定义,函数定义
此帖出自单片机论坛
 
个人签名无论什么时候,做什么事情,要思考
 
 

回复

1583

帖子

0

TA的资源

五彩晶圆(高级)

4
 
说得很好,学习学习~~~
H文件里应该有的:常量,结构 类型定义 函数声明 变量声明,
不应该有的:变量定义,函数定义

这个有时会碰到有人这两个放进去:变量定义,函数定义。
此帖出自单片机论坛
 
个人签名
 
 

回复

41

帖子

0

TA的资源

一粒金砂(初级)

5
 
楼主是国防部的哦,制服很不错。
此帖出自单片机论坛
 
个人签名一生只做一件事
 
 

回复

168

帖子

0

TA的资源

纯净的硅(初级)

6
 

回复 4楼 huchuan987 的帖子

呵呵 共同学习
此帖出自单片机论坛
 
个人签名无论什么时候,做什么事情,要思考
 
 

回复

168

帖子

0

TA的资源

纯净的硅(初级)

7
 

回复 5楼 Lostsun 的帖子

此帖出自单片机论坛
 
个人签名无论什么时候,做什么事情,要思考
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

8
 
这个东西确实难。
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表