请教有关h文件的问题

2019-03-24 14:42发布

看了几个h文件,有一些小疑问,还请高手指点   第一种: #ifndef _UART1_H
#define _UART1_H 1 。。。。。。 #endif   第二种: #ifndef _feed_dog_h
#define _feed_dog_h 。。。。。。 #endif   第三种: #ifndef _nRF905
#define _nRF905 。。。。。 #endif   这个ifndef后面跟的是h文件的名称吗,可第三种里的_nRF905不是h文件的名字   最好能提供一下h文件的详细格式,谢啦 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
Triton.zhang
2019-03-25 01:54
prcxjb答得很形象,这里我补充几点:
1. #ifndef 后面跟的不是头文件名称而是标识符。编译器的预处理分三种,宏定义、头文件包含和条件编译。#ifndef 属于条件编译。
2. #ifndef 的最主要目的是防止头文件的重复包含和编译。例如你的工程有两个.C文件,这两个文件都include了同一个头文件,这个头文件里又定义了全局变量。于是问题来了,大量的声明就会发生冲突。
解决这个问题有2个办法,一是把所有变量定义放在.c文件里,.h文件就只放申明。另一个办法就是用条件编译,防止重复包含。
3. 建议在你写的每一个.H文件里都加上这条语句。至于后面跟的标示符,尽量采用一个固定格式,我个人喜欢用 "__文件名_H__"这种格式,标示专门为头文件使用。
4. #ifndef的另外一种用法是用来定义一些编译参数,比如LCD的显示模式,是横向显示模式还是纵向显示模式。我们可能在多个文件中都会使用,用的时候为了防止漏定义或者定义冲突,就需要用#ifndef这个语句。

4. 后面还加一条建议,我建议每个程序员有时间都多看点编译原理的书。
triton.zhang
QQ:906411450

一周热门 更多>

相关问题

    相关文章