找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2659|回复: 10
收起左侧

求教一个单片机C语言头文件定义问题

[复制链接]
ID:100982 发表于 2022-7-14 15:45 | 显示全部楼层 |阅读模式
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C
#endif
void KeyScan();
void KeyDriver();
#endif

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


回复

使用道具 举报

ID:883242 发表于 2022-7-14 16:30 | 显示全部楼层
这是为了防止被多次引用的意思。
回复

使用道具 举报

ID:100982 发表于 2022-7-14 16:39 | 显示全部楼层
两个endif分别对应的是代码的哪个部分?
回复

使用道具 举报

ID:386442 发表于 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
回复

使用道具 举报

ID:824490 发表于 2022-7-14 17:20 | 显示全部楼层
缩进排版一下就明白了。
回复

使用道具 举报

ID:100982 发表于 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();
回复

使用道具 举报

ID:962286 发表于 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,并且使用这个头文件里边的内容;
回复

使用道具 举报

ID:696386 发表于 2022-7-16 18:28 | 显示全部楼层
#ifndef _KEY_BOARD_C #endif
回复

使用道具 举报

ID:696386 发表于 2022-7-16 18:28 | 显示全部楼层
#ifndef _KEY_BOARD_C #endif这两句没起作用啊,完全可以删掉哦。
回复

使用道具 举报

ID:434018 发表于 2022-7-17 09:57 | 显示全部楼层
#ifndef _KEY_BOARD_C
#endif
空的,
毫无作用.
回复

使用道具 举报

ID:100982 发表于 2022-7-18 17:07 | 显示全部楼层
明白了,谢谢大家
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表