<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51單片機總結--C語(yǔ)言之預處理

51單片機總結--C語(yǔ)言之預處理

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

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

本文引用地址:http://dyxdggzs.com/article/201608/295292.htm

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

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

  一.宏定義

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

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

  宏定義分為不帶參數的宏定義,和帶參數的宏定義。

  不帶參的宏定義:

  一般格式:#define 標識符 常量表達式

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

  #define PI 3.1415926

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

  使用注意:

  使用中#define 和標識符之間必須留有空格,標識符和常量表達式之間也必須有空格。

  帶參數的宏定義:

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

  格式:

  #define 宏符號名(參數表) 表達式

  如:

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

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

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

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

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

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

  顯然與我們的目的不同。

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

  二.文件包含

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

  頭文件的定義格式。

  以頭文件led.h為例。

  #ifndef __LED_H__

  #define __LED_H__

  ………內容………

  #endif

  使用尖括號和雙引號的區別:

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

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

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

  典型的頭文件內容包括:

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

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

  3:類(lèi)型定義。包括結構體,共用體,數組等類(lèi)型定義



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>