標(biāo)題: 求教一個(gè)單片機(jī)C語言頭文件定義問題 [打印本頁]

作者: wifen    時(shí)間: 2022-7-14 15:45
標(biāo)題: 求教一個(gè)單片機(jī)C語言頭文件定義問題
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C
#endif
void KeyScan();
void KeyDriver();
#endif

看書上這么寫的,這個(gè)endif怎么兩個(gè)是放這個(gè)位置的?不是很理解。



作者: Hephaestus    時(shí)間: 2022-7-14 16:30
這是為了防止被多次引用的意思。
作者: wifen    時(shí)間: 2022-7-14 16:39
兩個(gè)endif分別對(duì)應(yīng)的是代碼的哪個(gè)部分?
作者: 神話A小王子    時(shí)間: 2022-7-14 17:14
wifen 發(fā)表于 2022-7-14 16:39
兩個(gè)endif分別對(duì)應(yīng)的是代碼的哪個(gè)部分?


#ifndef _KEY_BOARD_H     //定義這個(gè)是防止這個(gè).h文件被重復(fù)include
#define _KEY_BOARD_H

    #ifndef _KEY_BOARD_C  //這個(gè)其實(shí)無需定義,因?yàn)槊看蝘nclude的時(shí)候不會(huì)去引用這個(gè).c文件的
    #endif                          //和上面這行成對(duì)使用

    void KeyScan();  //聲明函數(shù)
    void KeyDriver();

#endif
作者: 名字不是重點(diǎn)    時(shí)間: 2022-7-14 17:20
縮進(jìn)排版一下就明白了。
作者: wifen    時(shí)間: 2022-7-14 17:20
神話A小王子 發(fā)表于 2022-7-14 17:14
#ifndef _KEY_BOARD_H     //定義這個(gè)是防止這個(gè).h文件被重復(fù)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   就執(zhí)行這個(gè) void KeyScan();
void KeyDriver();
作者: MCU_FANS    時(shí)間: 2022-7-14 18:01
wifen 發(fā)表于 2022-7-14 17:20
#ifndef _KEY_BOARD_H
#define _KEY_BOARD_H
#ifndef _KEY_BOARD_C

a. 如果調(diào)用此頭文件之前已經(jīng)定義了_KEY_BOARD_H,則不使用這個(gè)頭文件里邊的內(nèi)容;
b. 如果調(diào)用此頭文件之前沒有定義過_KEY_BOARD_H,則定義一下_KEY_BOARD_H,并且使用這個(gè)頭文件里邊的內(nèi)容;
作者: guli    時(shí)間: 2022-7-16 18:28
#ifndef _KEY_BOARD_C #endif
作者: guli    時(shí)間: 2022-7-16 18:28
#ifndef _KEY_BOARD_C #endif這兩句沒起作用啊,完全可以刪掉哦。
作者: frank_tw    時(shí)間: 2022-7-17 09:57
#ifndef _KEY_BOARD_C
#endif
空的,
毫無作用.
作者: wifen    時(shí)間: 2022-7-18 17:07
明白了,謝謝大家




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1