標(biāo)題: 算是詳細(xì)了!單片機(jī)程序頭文件的定義、編寫(xiě)及引用介紹 [打印本頁(yè)]
作者: yonko 時(shí)間: 2022-4-22 22:50
標(biāo)題: 算是詳細(xì)了!單片機(jī)程序頭文件的定義、編寫(xiě)及引用介紹
成都控制板設(shè)計(jì)提供_算是詳細(xì)了!單片機(jī)程序頭文件的定義、編寫(xiě)及引用介紹
SO技術(shù)分享之31
初聽(tīng)迷茫不必慌,日出霧散路明亮。
本文介紹頭文件的定義、編寫(xiě)、保存及引用等方面的內(nèi)容,包括了一般的格式要求、例程等。
什么是頭文件?
頭文件在C語(yǔ)言程序開(kāi)發(fā)中一般來(lái)說(shuō)是必需的,一般在C程序的開(kāi)頭就得引用頭文件。
頭文件作為一種包含功能函數(shù)、數(shù)據(jù)接口聲明的載體文件,主要用于保存程序的聲明,而定義文件用于保存程序的實(shí)現(xiàn)。
為什么要用頭文件?
如果沒(méi)有頭文件,那么定義只有就在C文件中進(jìn)行,有幾個(gè)壞處:
->不便于閱讀。定義和功能代碼放在一起,可讀性變差;
->重復(fù)勞動(dòng),增加程序量。在各個(gè)C文件中,只要用到了就得重新定義一下,重復(fù)的代碼會(huì)變多等。
如需項(xiàng)目開(kāi)發(fā)定制,可Q-Q: 2531二六3726。
頭文件編寫(xiě)的一般格式要求是怎樣?
1.png (262.27 KB, 下載次數(shù): 46)
下載附件
2022-4-22 22:49 上傳
很多東西都有格式的,按照格式來(lái)做一般不會(huì)出錯(cuò)。圖1為頭文件定義的一般結(jié)構(gòu)。
開(kāi)頭的#ifndef和最后的#endif需要成對(duì)出現(xiàn),它的含義為假如沒(méi)有定義某文件的話,那么執(zhí)行某些操作。在#ifndef和#endif之間可以編寫(xiě)頭文件定義的代碼,如載入其他頭文件、引腳定義、子程序預(yù)定義等的。
下表給出了圖1中部分代碼的解釋。
表 1 圖1的要點(diǎn)解釋
| #ifndef __XXX_H__ … #endif | 含義為假如沒(méi)有定義XXX.H,那么就執(zhí)行某些操作。 If和endif必須成對(duì)使用。 |
| |
| 載入相關(guān)的系統(tǒng)頭文件xxx.h |
| |
| 系統(tǒng)位定義。一般用于定義引腳,用x代替引腳p。 |
| 符號(hào)變量定義,X就表示Y值。Y一般為具體數(shù)值。X和Y之間有空格 |
| 子程序預(yù)定義。在其他程序里載入了這個(gè)頭文件后,就能調(diào)用XX子程序。預(yù)定義后在對(duì)應(yīng)的C文件里還得編寫(xiě)具體的子程序代碼。 |
一個(gè)頭文件編寫(xiě)的例子
2.png (443.54 KB, 下載次數(shù): 48)
下載附件
2022-4-22 22:49 上傳
有個(gè)例子,會(huì)有更加生動(dòng)的理解。圖2為一個(gè)頭文件定義的例子,頭文件的名字位relaycontrol.h,這個(gè)頭文件里包含了載入其他頭文件、引腳定義、符號(hào)變量定義、子程序預(yù)定義等內(nèi)容。
頭文件的保存方法
保存頭文件一般有2種方法:
(1)、在keil中保存H文件:如例,假如在keil中新建了H文件,編寫(xiě)完頭文件代碼后,點(diǎn)擊保存按鈕,命名后保存在電腦硬盤(pán)(與引用它的C文件在同一個(gè)文件夾)里即可,本例中保存的頭文件為relaycontrol.h。
(2)、在電腦里新建一個(gè)TXT文件,再改擴(kuò)展名為.h:在電腦硬盤(pán)(與引用它的C文件在同一個(gè)文件夾)中新建一個(gè)txt文件,寫(xiě)入頭文件代碼,保存,并改擴(kuò)展名為.h。本例中將這個(gè)txt文件名及擴(kuò)展名改為relaycontrol.h。
怎么在C程序中引用頭文件?
3.png (225.58 KB, 下載次數(shù): 59)
下載附件
2022-4-22 22:50 上傳
4.png (204.95 KB, 下載次數(shù): 52)
下載附件
2022-4-22 22:50 上傳
在C程序中,頭文件需要先引用后才能使用,一般引用頭文件放在程序的開(kāi)頭位置。
在C文件中引用頭文件的方法很簡(jiǎn)單,就是在程序中用“#include”指令把相應(yīng)的頭文件載入就行了。
引用后,在這個(gè)C文件中就能使用頭文件里已經(jīng)定義的內(nèi)容,如定義的引腳、符號(hào)變量和子程序等。
是否需要幫助?
提供單片機(jī)、PLC、電路板、控制器/箱、儀器儀表、機(jī)電設(shè)備或系統(tǒng)、自動(dòng)化、工控、傳感、數(shù)據(jù)采集、自控系統(tǒng)、控制系統(tǒng),軟件、APP開(kāi)發(fā)設(shè)計(jì)定制訂做。如有項(xiàng)目需要,可Q:2531二六3726。
本節(jié)完,精彩待續(xù)。
作者: lzzasd 時(shí)間: 2022-4-23 11:09
編寫(xiě)功能多的程序 .h文件是必須的
作者: 1109 時(shí)間: 2022-4-23 14:17
對(duì)于不懂程序的我來(lái)說(shuō),受益匪淺;謝謝樓主!
作者: 南書(shū)DB 時(shí)間: 2022-4-26 17:37
程序分塊寫(xiě)可讀性會(huì)好很多,學(xué)到了學(xué)到了
作者: chanmk 時(shí)間: 2022-4-26 19:37
假如沒(méi)定義,就定義它,不是太明白
作者: hy47566398 時(shí)間: 2022-4-27 18:21
本帖最后由 hy47566398 于 2022-4-27 18:34 編輯
#ifndef __XXX_H__
這一句只是程序編譯時(shí)判斷是否定義了 __XXX_H__ 宏
也就是程序此時(shí)是否程序執(zhí)行過(guò)了 #define __ XXX _H__ , 以防頭文件被重復(fù)包含定義了 __ XXX _H__ 宏,表示程序執(zhí)了這個(gè)頭文件代碼,程序跳到#endif處執(zhí)行
如果沒(méi)有定義這個(gè)宏,執(zhí)行#ifndef后的代碼
__ XXX _H__ 這個(gè)宏名稱可以隨便寫(xiě),跟文件名一點(diǎn)關(guān)系都沒(méi)有
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |