c語(yǔ)言——條件編譯

c語(yǔ)言——條件編譯

ID:36291040

大?。?39.50 KB

頁(yè)數(shù):25頁(yè)

時(shí)間:2019-05-08

c語(yǔ)言——條件編譯_第1頁(yè)
c語(yǔ)言——條件編譯_第2頁(yè)
c語(yǔ)言——條件編譯_第3頁(yè)
c語(yǔ)言——條件編譯_第4頁(yè)
c語(yǔ)言——條件編譯_第5頁(yè)
資源描述:

《c語(yǔ)言——條件編譯》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)

1、第九章條件編譯回顧指針是一個(gè)變量,它存儲(chǔ)另一個(gè)對(duì)象的內(nèi)存地址指針的聲明由基本類型、星號(hào)(*)和變量名組成為指針賦值,賦值運(yùn)算符右側(cè)必須是一個(gè)地址。如果是普通變量需要在前面加一個(gè)取地址運(yùn)算符&;如果是另一個(gè)指針變量或者是一個(gè)數(shù)組,不需要加&運(yùn)算符運(yùn)算符*用于返回指針指向的內(nèi)存地址中存儲(chǔ)的值指針的算術(shù)運(yùn)算的含義是指針的移動(dòng),將指針執(zhí)行加上或者減去一個(gè)整數(shù)值n的運(yùn)算相當(dāng)于指針向前或向后移動(dòng)n個(gè)數(shù)據(jù)單元指針可以執(zhí)行比較相等的運(yùn)算,用來(lái)判斷兩個(gè)指針是否指向同一個(gè)變量指向數(shù)組的指針,存儲(chǔ)的是數(shù)組中元素的地址。目標(biāo)理解以“#”號(hào)開頭編譯預(yù)處理。理解宏定義。理解條件編譯。預(yù)處理命令是由A

2、NSIC統(tǒng)一規(guī)定的,但是它不是C語(yǔ)言本身的組成部分,不能直接對(duì)它們進(jìn)行編譯。必須在對(duì)程序進(jìn)行通常的編譯之前,先對(duì)程序中這些特殊的命令進(jìn)行“預(yù)處理”,即根據(jù)預(yù)處理命令對(duì)程序作相應(yīng)的處理。經(jīng)過(guò)預(yù)處理后程序不再包括預(yù)處理命令了,最后再由編譯程序?qū)︻A(yù)處理后的源程序進(jìn)行通常的編譯處理,得到可供執(zhí)行的目標(biāo)代碼?,F(xiàn)在使用的許多C編譯系統(tǒng)都包括了預(yù)處理、編譯和連接等部分,在進(jìn)行編譯時(shí)一氣呵成。因此不少用戶誤認(rèn)為預(yù)處理命令是C語(yǔ)言的一部分,甚至以為它們是C語(yǔ)句,這是不對(duì)的。C提供的預(yù)處理功能主要有以下三種:1.宏定義2.文件包含3.條件編譯為了與一般C語(yǔ)句相區(qū)別,這些命令以符號(hào)“#”開頭。

3、9.1宏定義9.1宏定義9.1.1不帶參數(shù)的宏定義用一個(gè)指定的標(biāo)識(shí)符(即名字)來(lái)代表一個(gè)字符串,它的一般形式為:#define標(biāo)識(shí)符字符串例:#definePI3.1415926把這個(gè)標(biāo)識(shí)符(名字)稱為“宏名”;在預(yù)編譯時(shí)將宏名替換成字符串的過(guò)程稱為“宏展開”;#define是宏定義命令。例9.1利用不帶參數(shù)的宏計(jì)算(1)圓的面積;(2)矩形面積;(3)三角形面積。#include#definePI3.14#definea1.2#defineb2.4#defines2a*b#definex1.2#definey2.4#defines3x*y/2.0voi

4、dmain(){doubler,s1;printf(“請(qǐng)輸入圓的半徑r:”);scanf(“%lf”,&r);s1=PI*r*r;printf(“圓的面積s1=%lf”,s1);printf(“矩形的面積s2=%lf”,s2);printf(“三角形的面積s3=%lf”,s3);}9.1宏定義【注意點(diǎn)】(1)在預(yù)定義中已經(jīng)用到的符號(hào)不能在函數(shù)中再定義,如:doubles2,s3,a,b,x,y;(2)在不帶參數(shù)的宏定義中像a,b,x,y必須先預(yù)定義后才能在后面的宏定義中使用,即宏定義可以嵌套,宏定義的字符串中可以使用已定義的宏名,在宏展開時(shí)由預(yù)處理程序?qū)訉哟鷵Q

5、;例如:#definea1.2#defineb2.4#defines2a*b(3)在宏定義中,符號(hào)常量一般大寫,本例中有大寫也有小寫。(4)編譯器在編譯之前把程序中出現(xiàn)的一切宏用其對(duì)應(yīng)的表達(dá)式字符串來(lái)替代,而不是計(jì)算表達(dá)式的值后才替代,即宏定義是用宏名表示的一個(gè)字符串,在宏展開時(shí)又以該字符串取代宏,這只是一種簡(jiǎn)單的代換,字符串可以含有任何字符,可以是常量,也可以是表達(dá)式,預(yù)處理程序?qū)λ蛔魅魏螜z查。如有錯(cuò)誤,只能在編譯已被宏展開后的源程序時(shí)才發(fā)現(xiàn)。9.1宏定義(5)在#define語(yǔ)句中,宏與字符串之間用空格隔開,在表達(dá)式末尾沒(méi)有分號(hào),不然分號(hào)也會(huì)被認(rèn)為是表達(dá)式的一部分而

6、出現(xiàn)在程序中宏出現(xiàn)的位置。(6)如果在雙引號(hào)中的字符串中出現(xiàn)宏名,則此字符串中的和宏名相同的字符是普通字符不會(huì)被替換。例如:printf(“矩形的面積s2=%lf”,s2);該語(yǔ)句中的第1個(gè)s2就不會(huì)被替換。另外對(duì)“輸出格式”作宏定義,可以減少書寫麻煩,但可讀性差。例如:#include#definePprintf#defineD“%d”#defineF“%f”voidmain(){inta=1,c=2;floatb=1.2,d=2.4;P(DF,a,b);P(DF,c,d);}9.2帶參數(shù)的宏定義C語(yǔ)言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為形

7、式參數(shù),在宏調(diào)用中的參數(shù)稱為實(shí)際參數(shù)。對(duì)帶參數(shù)的宏,在調(diào)用中,不僅要宏展開,而且要用實(shí)參去代換形參。帶參宏定義的一般形式為:#define宏名(形參表)字符串在字符串中含有各個(gè)形參。帶參數(shù)的宏調(diào)用的一般形式為:宏名(實(shí)參表);例如:#defineS2(a,b)(a)*(b)/*宏定義*/……printf(“矩形的面積S2=%lf”,S2(1.2,2.4));/*宏調(diào)用*/……在宏調(diào)用時(shí),用實(shí)參1.2和2.4去代替形參a,b,經(jīng)預(yù)處理宏展開后的語(yǔ)句為:printf(“矩形的面積S2=%lf”,1.2*2.4);例9.2利

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。