新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)總結(jié)--C語(yǔ)言之預(yù)處理

        51單片機(jī)總結(jié)--C語(yǔ)言之預(yù)處理

        作者: 時(shí)間:2016-08-10 來(lái)源:網(wǎng)絡(luò) 收藏

          編譯預(yù)處理器是編譯器的一個(gè)重要組成部分。很好的利用的預(yù)處理命令可以增強(qiáng)代碼的可讀性,靈活性,和易于修改等特點(diǎn),便于程序的結(jié)構(gòu)化。

        本文引用地址:http://www.104case.com/article/201608/295292.htm

          預(yù)處理命令由符號(hào)“#”開(kāi)頭,包括宏定義,文件包含,條件處理三個(gè)部分。

          其中條件編譯我還沒(méi)有用過(guò),所以就詳細(xì)介紹一下宏定義和文件包含。

          一.宏定義

          宏定義命令為#define,它的作用就是實(shí)現(xiàn)用一個(gè)簡(jiǎn)單易讀的字符串來(lái)代替

          另一個(gè)字符串。增加程序的可讀性,和維護(hù)性。

          宏定義分為不帶參數(shù)的宏定義,和帶參數(shù)的宏定義。

          不帶參的宏定義:

          一般格式:#define 標(biāo)識(shí)符 常量表達(dá)式

          例如用一個(gè)字符代替一個(gè)常數(shù)

          #define PI 3.1415926

          當(dāng)程序中出現(xiàn)3.1415926這個(gè)常數(shù)的時(shí)候就可以用PI這個(gè)字符代替,如果想修改這個(gè)常數(shù)只需要修改這個(gè)宏定義中的常數(shù),就可以達(dá)到修改整個(gè)文件中這個(gè)常數(shù)的目的。這就是增加維護(hù)性的體現(xiàn)。

          使用注意:

          使用中#define 和標(biāo)識(shí)符之間必須留有空格,標(biāo)識(shí)符和常量表達(dá)式之間也必須有空格。

          帶參數(shù)的宏定義:

          帶參數(shù)的宏定義和不帶參數(shù)的宏定義之間的區(qū)別在于,帶參數(shù)的宏定義不只是進(jìn)行字符串的替換,而且還要進(jìn)行參數(shù)的替換。注意是參數(shù)替換。

          格式:

          #define 宏符號(hào)名(參數(shù)表) 表達(dá)式

          如:

          #define MIN(x,y) (((x)<(y))?(x):(y))

          1;注意為了安全起見(jiàn)后邊表達(dá)式中的參數(shù)使用“()”括起來(lái),防止程序中

          使用該宏時(shí)由于優(yōu)先級(jí)問(wèn)題引起的錯(cuò)誤。

          如:#define S(r) PI*r*r

          如果程序中用到m=S(a+b)

          則替換后等同于 m="PI"*a+b*a+b

          顯然與我們的目的不同。

          2.宏定義命令#define 要求一行內(nèi)寫(xiě)完,如果一行內(nèi)完不成可以用“”表示下一行繼續(xù)。

          二.文件包含

          頭文件的目的就是在庫(kù)函數(shù)與使用該庫(kù)函數(shù)的程序之間建立接口。

          頭文件的定義格式。

          以頭文件led.h為例。

          #ifndef __LED_H__

          #define __LED_H__

          ………內(nèi)容………

          #endif

          使用尖括號(hào)和雙引號(hào)的區(qū)別:

          使用尖括號(hào)的話,編譯時(shí)會(huì)先在系統(tǒng)include目錄里搜索,如果找不到才會(huì)在源代碼所在目錄搜索;使用雙引號(hào)則相反,會(huì)先在源代碼目錄里搜索。這就意味著,當(dāng)系統(tǒng)里(如/usr/include/里)有一個(gè)叫做at89c.h的頭文件,而你的源代碼目錄里也有一個(gè)你自己寫(xiě)的at89c.h頭文件,那么使用尖括號(hào)時(shí)用的就是系統(tǒng)里的;而使用雙引號(hào)的話則會(huì)使用你自己寫(xiě)的那個(gè)。

          所以建議: 使用系統(tǒng)里提供的頭文件時(shí)使用尖括號(hào)

          使用自己編寫(xiě)的頭文件時(shí)使用雙引號(hào)

          典型的頭文件內(nèi)容包括:

          1:說(shuō)明文字。用于注釋該頭文件的主要內(nèi)容,函數(shù)的作用,函數(shù)的接口等

          2; #define 命令命名的宏定義

          3:類型定義。包括結(jié)構(gòu)體,共用體,數(shù)組等類型定義



        關(guān)鍵詞: 51 C語(yǔ)言

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 稷山县| 宜黄县| 曲沃县| 伊春市| 宜兰市| 凤凰县| 巴彦县| 台南县| 分宜县| 乐安县| 雅江县| 昌都县| 涞水县| 资溪县| 铜山县| 钦州市| 漯河市| 天等县| 武穴市| 潜山县| 廉江市| 民丰县| 万山特区| 黄浦区| 内丘县| 班玛县| 安仁县| 桦南县| 鄂温| 合山市| 龙岩市| 华池县| 石门县| 周至县| 馆陶县| 梅河口市| 南宁市| 永仁县| 如皋市| 泉州市| 云南省|