标题: 求教一个单片机C语言头文件定义问题 [打印本页]

作者: wifen    时间: 2022-7-14 15:45
标题: 求教一个单片机C语言头文件定义问题
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C
#endif
void KeyScan();
void KeyDriver();
#endif

看书上这么写的,这个endif怎么两个是放这个位置的?不是很理解。



作者: Hephaestus    时间: 2022-7-14 16:30
这是为了防止被多次引用的意思。
作者: wifen    时间: 2022-7-14 16:39
两个endif分别对应的是代码的哪个部分?
作者: 神话A小王子    时间: 2022-7-14 17:14
wifen 发表于 2022-7-14 16:39
两个endif分别对应的是代码的哪个部分?


#ifndef _KEY_BOARD_H     //定义这个是防止这个.h文件被重复include
#define _KEY_BOARD_H

    #ifndef _KEY_BOARD_C  //这个其实无需定义,因为每次include的时候不会去引用这个.c文件的
    #endif                          //和上面这行成对使用

    void KeyScan();  //声明函数
    void KeyDriver();

#endif
作者: 名字不是重点    时间: 2022-7-14 17:20
缩进排版一下就明白了。
作者: wifen    时间: 2022-7-14 17:20
神话A小王子 发表于 2022-7-14 17:14
#ifndef _KEY_BOARD_H     //定义这个是防止这个.h文件被重复include
#define _KEY_BOARD_H


#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C
#endif
void KeyScan();
void KeyDriver();
#endif

那意思是不是说如果定义了 _KEY_BOARD_H   就执行这个 void KeyScan();
void KeyDriver();
作者: MCU_FANS    时间: 2022-7-14 18:01
wifen 发表于 2022-7-14 17:20
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C

a. 如果调用此头文件之前已经定义了_KEY_BOARD_H,则不使用这个头文件里边的内容;
b. 如果调用此头文件之前没有定义过_KEY_BOARD_H,则定义一下_KEY_BOARD_H,并且使用这个头文件里边的内容;
作者: guli    时间: 2022-7-16 18:28
#ifndef _KEY_BOARD_C #endif
作者: guli    时间: 2022-7-16 18:28
#ifndef _KEY_BOARD_C #endif这两句没起作用啊,完全可以删掉哦。
作者: frank_tw    时间: 2022-7-17 09:57
#ifndef _KEY_BOARD_C
#endif
空的,
毫无作用.
作者: wifen    时间: 2022-7-18 17:07
明白了,谢谢大家




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1