真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言宏定義函數(shù)如何調(diào)用 C語(yǔ)言怎么定義宏

C語(yǔ)言中的宏定義如何使用?

宏定義又稱為宏代換、宏替換,簡(jiǎn)稱"宏"。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括堆龍德慶網(wǎng)站建設(shè)、堆龍德慶網(wǎng)站制作、堆龍德慶網(wǎng)頁(yè)制作以及堆龍德慶網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,堆龍德慶網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到堆龍德慶省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

格式:

#define 標(biāo)識(shí)符 字符串

其中的標(biāo)識(shí)符就是所謂的符號(hào)常量,也稱為"宏名"。

預(yù)處理(預(yù)編譯)工作也叫做宏展開(kāi):將宏名替換為字符串。

掌握"宏"概念的關(guān)鍵是"換"。一切以換為前提、做任何事情之前先要換,準(zhǔn)確理解之前就要"換"。

即在對(duì)相關(guān)命令或語(yǔ)句的含義和功能作具體分析之前就要換:

例:

#define Pi 3.1415926

把程序中出現(xiàn)的Pi全部換成3.1415926

關(guān)于c語(yǔ)言宏定義這里是怎么用的?

那個(gè)是分號(hào),不是冒號(hào)。這個(gè)分號(hào)的作用就是函數(shù)調(diào)用語(yǔ)句末尾的分號(hào)

例如LED_BLUE宏展開(kāi)后為digitalHi(LED1_GPIO_PORT,LED1_GPIO_PIN);digitalHi(LED2_GPIO_PORT,LED2_GPIO_PIN);digitalLo(LED3_GPIO_PORT,LED3_GPIO_PIN)

你只需要使用“LED_BLUE;”語(yǔ)句就可以關(guān)閉LED1和2,打開(kāi)LED3。

宏定義可以執(zhí)行多條函數(shù),宏定義的本質(zhì)實(shí)際上是文本替換,把宏定義的內(nèi)容原原本本地替換到宏使用的地方。

另外,LED2_OFF后面似乎也應(yīng)該有個(gè)分號(hào),否則編譯應(yīng)該會(huì)出錯(cuò)的。除非LED2_OFF宏定義里加了分號(hào)。

請(qǐng)問(wèn)C語(yǔ)言中宏定義怎么用

宏定義就好像是WORD中的“全部替換”一樣,只不過(guò)這個(gè)替換是在將源程序在系統(tǒng)“編譯”時(shí)執(zhí)行的。

舉例說(shuō):

#define sub(a,b) ((a)-(b))

源程序中若有

x=sub(200-1,100+10);

會(huì)被編譯為:

x=((200-1)-(100+10));

即x被賦值為89

如果#define sub(a,b) a-b的話

x=sub(200-1,100+10);

就變成x=200-1-100+10;

x會(huì)被賦值為109

c語(yǔ)言的宏定義有哪些技巧

(一)宏定義中的##

連接符與#

##

連接符號(hào)由兩個(gè)井號(hào)組成,其功能是在帶參數(shù)的宏定義中將兩個(gè)子串(token)聯(lián)接起來(lái),從而形成一個(gè)新的子串。但它不可以是第一個(gè)或者最后一個(gè)子串。所謂的子串(token)就是指編譯器能夠識(shí)別的最小語(yǔ)法單元。具體的定義在編譯原理里有詳盡的解釋,但不知道也無(wú)所謂。同時(shí)值得注意的是#符是把傳遞過(guò)來(lái)的參數(shù)當(dāng)成字符串進(jìn)行替代。下面來(lái)看看它們是怎樣工作的。這是msdn上的一個(gè)例子。

假設(shè)程序中已經(jīng)定義了這樣一個(gè)帶參數(shù)的宏:

#define

paster(

n

)

printf(

"token"

#n

"

=

%d",

token##n

)

同時(shí)又定義了一個(gè)整形變量:

int

token9

=

9;

現(xiàn)在在主程序中以下面的方式調(diào)用這個(gè)宏:

paster(

9

);

那么在編譯時(shí),上面的這句話被擴(kuò)展為:

printf(

"token"

"9"

"

=

%d",

token9

);

注意到在這個(gè)例子中,paster(9);中的這個(gè)”9”被原封不動(dòng)的當(dāng)成了一個(gè)字符串,與”token”連接在了一起,從而成為了token9。而#n也被”9”所替代。

可想而知,上面程序運(yùn)行的結(jié)果就是在屏幕上打印出token9=9

(二)"\"與一個(gè)較長(zhǎng)占多行的宏

宏定義中允許包含兩行以上命令的情形,此時(shí)必須在最右邊加上"\"且該行"\"后不能再有任何字符,連注釋部分都不能有,下面的每行最后的一定要是"\","\"后面加一個(gè)空格都會(huì)報(bào)錯(cuò),更不能跟注釋。

#define

exchange(a,b)

{\

int

t;\

t=a;\

a=b;\

b=t;\

}

c語(yǔ)言宏定義如何用?用宏定義有什么優(yōu)點(diǎn)?

主要用于函數(shù)重定義,通用性,可以用一個(gè)變量符號(hào)替代另一個(gè)變量符號(hào)

格式:#define M(x,y) x+y

在主程序里寫(xiě)入z=M(6,9);等價(jià)于z=6+9;而寫(xiě)成z=(6-8,9);等價(jià)于z=6-8+9 ;直接代入

還有就是 :#define Uint unsigned int 即用 Uint 代替unsigned int 便于書(shū)寫(xiě),還有就是不同操作系統(tǒng)的通用變量識(shí)別

C語(yǔ)言中的宏定義怎么用?

C語(yǔ)言中的宏定義用法分為兩種。

1、不帶參數(shù)的宏定義比較簡(jiǎn)單,就是用一個(gè)指定的標(biāo)識(shí)符來(lái)代表一個(gè)字符串。它的一般形式為“#define 標(biāo)識(shí)符 字符串”,例如#define E 2.718281828459。這種方法使用戶能以一個(gè)簡(jiǎn)單的名字代替一個(gè)長(zhǎng)的字符串。

2、帶參數(shù)的宏定義不是僅僅進(jìn)行簡(jiǎn)單的字符串替換,還要進(jìn)行參數(shù)替換。其定義的一般形式為;“#define 標(biāo)識(shí)符(宏名)(參數(shù)表) 字符串”,字符串中包含在括號(hào)中所指定的參數(shù)。例如#define S(a,b) a*b area=S(3. 2)。

擴(kuò)展資料:

宏定義只占編譯時(shí)間,函數(shù)調(diào)用則占用運(yùn)行時(shí)間(分配單元,保存現(xiàn)場(chǎng),值傳遞,返回),每次執(zhí)行都要載入,所以執(zhí)行相對(duì)宏定義會(huì)較慢。

使用宏定義次數(shù)多時(shí),宏定義展開(kāi)后源程序很長(zhǎng),因?yàn)槊空归_(kāi)一次都使程序增長(zhǎng),但是執(zhí)行起來(lái)比較快一點(diǎn)(這也不是絕對(duì)的,當(dāng)有很多宏定義展開(kāi),目標(biāo)文件很大,執(zhí)行的時(shí)候運(yùn)行時(shí)系統(tǒng)換頁(yè)頻繁,效率就會(huì)低下)。而函數(shù)調(diào)用不使源程序變長(zhǎng)。


網(wǎng)站標(biāo)題:c語(yǔ)言宏定義函數(shù)如何調(diào)用 C語(yǔ)言怎么定義宏
網(wǎng)頁(yè)網(wǎng)址:http://weahome.cn/article/hpiosh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部