迅為IMX6ULL開(kāi)發(fā)板Ubuntu下C編程入門(mén)(二)_第1頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、迅為imx6ull開(kāi)發(fā)板ubuntu下c編程入門(mén)(二)在上圖可以看到變量 ceshi2 的值是 temp,也就是變量 ceshi1 最后一次的賦值。2. “ := ” 賦值符我們修改“=”賦值符中的代碼,其次行的“=”改成“:=”,代碼如下:1 ceshi1 = test2 ceshi2 := $(ceshi1)3 ceshi1 = temp45 out:6 echo ceshi2(ceshi2)我們?cè)诮K端輸入“make out”指令,如下圖所示:file:/c:usersadmini1appdatalocaltempksohtml10068wps4.png我們可以看到上圖的運(yùn)行結(jié)果輸出變量

2、ceshi2 的值是 test,雖然在第三行我們修改了變量 ceshi1 的值,通過(guò)本試驗(yàn)我們可以看到“:=”賦值符的功能了。3. “ ?= ” 賦值符ceshi ?= test“?=”賦值符的作用是假如前面沒(méi)有給變量 ceshi 賦值,那么變量就賦值“test”,假如前面已經(jīng)賦值了,就用法前面的賦值。4. “ += ” 賦值符objs = main.oobjs += calc.o上面的腳本最后變量 objs 的值是“main.o calc.o”,“+=”賦值符的功能是實(shí)現(xiàn)變量的追加。3.4.3 條件推斷用法條件推斷,可以讓 make 按照運(yùn)行時(shí)的不憐憫況挑選不同的執(zhí)行分支。條件表達(dá)式可以是比

3、較變量的值,或是比較變量和常量的值。其語(yǔ)法有下面兩種:1.條件為真時(shí)執(zhí)行的腳本endif2.條件為真時(shí)執(zhí)行的腳本else條件為假時(shí)執(zhí)行的腳本endif條件比較用到的比較關(guān)鍵字有:ifeq、ifneq、ifdef、ifndef。ifeq 表示假如比較相等,語(yǔ)法如下:ifeq(, )ifneq 表示假如不相等,語(yǔ)法如下:ifneq(, )ifdef 表示假如定義了變量,語(yǔ)法如下:ifdef ifndef 表示假如沒(méi)有定義變量,語(yǔ)法如下:ifndef 3.4.4 用法函數(shù)在 makefile 中可以用法函數(shù)來(lái)處理變量,從而讓我們的指令或是規(guī)章更為的靈便和具有智能。make 所支持的函數(shù)也不算無(wú)數(shù),不

4、過(guò)已經(jīng)足夠我們的操作了。函數(shù)調(diào)用后,函數(shù)的返回值可以當(dāng)做變量來(lái)用法。函數(shù)的調(diào)用很像變量的用法,也是以“$”來(lái)標(biāo)識(shí)的,語(yǔ)法如下:$( )或者:$ 函數(shù)名和參數(shù)集合之間以空格分隔,參數(shù)集合的參數(shù)通過(guò)逗號(hào)分隔。函數(shù)調(diào)用以“$”開(kāi)始,以圓括號(hào)或花括號(hào)把函數(shù)名和參數(shù)括起。感覺(jué)很像一個(gè)變量。函數(shù)中的參數(shù)可以用法變量。為了風(fēng)格的統(tǒng)一,函數(shù)和變量的括號(hào)最好一樣,如用法“$(subst a,b,$(x)”這樣的形式,而不是“$(subst a,b,$x)”的形式。由于統(tǒng)一會(huì)更清晰,也會(huì)削減一些不須要的棘手。接下來(lái)我們介紹幾個(gè)常用的函數(shù),其它的函數(shù)可以參考文檔跟我一起寫(xiě) makefile。t 1.subst 函數(shù)

5、$(subst ,)此函數(shù)的功能是把字串中的字符串替換成,函數(shù)返回被替換過(guò)后的字符串。如下示例:$(subst ee,ee,feet on the street)以上腳本實(shí)現(xiàn)把字符串“feet on the street”中的“ee”字符串替換成“ee”字符串,替換后的字符串為“feet on the street”。. 2. t patsubst 函數(shù)$(patsubst ,)此函數(shù)的功能是查找中的單詞(單詞以“空格”、“tab”或“回車(chē)”“換行”分隔)是否符合模式,假如匹配的話(huà),則以替換。這里可以包括通配符“%”,表示隨意長(zhǎng)度的字串。假如中也包含“%”,那么中的這個(gè)“%”將是中的那個(gè)“%”

6、所代表的字串。(可以用“”來(lái)轉(zhuǎn)義,以“%” 來(lái)表示真切含義的“%”字符)。函數(shù)返回被替換過(guò)后的字符串。如下示例:$(patsubst %.c,%.o,x.c bar.c)以上腳本實(shí)現(xiàn)把字串“x.c bar.c”符合模式%.c的單詞替換成%.o,返回結(jié)果是“x.o bar.o”3.strip 函數(shù)$(strip )此函數(shù)的功能是去掉字串中開(kāi)始和結(jié)尾的空字符,函數(shù)返回被去掉空格的字符串值。如下示例:$(strip a b c )以上腳本實(shí)現(xiàn)把字串“a b c ”去掉開(kāi)始和結(jié)尾的空格,結(jié)果是“a b c”。. 4. g findstring 函數(shù)$(findstring ,)此函數(shù)的功能是在字串中查

7、找字串,假如找到,那么返回,否則返回空字符串,如下示例:$(findstring a,a b c)$(findstring a,b c)以上腳本,第一個(gè)返回“a”字符串,其次個(gè)返回空字符串。r 5.dir 函數(shù)$(dir )此函數(shù)的功能是從文件名序列中取出名目部分。名目部分是指最后一個(gè)反斜杠(“/”)之前的部分。假如沒(méi)有反斜杠,那么返回“./”。返回文件名序列的名目部分,如下示例:$(dir src/foo.c hacks)以上腳本運(yùn)行結(jié)果返回“src/”。. 6. r notdir 函數(shù)$(notdir )此函數(shù)的功能是從文件名序列中取出非名目部分。非名目部分是指最后一個(gè)反斜杠(“/”)之后

8、的部分,返回文件名序列的非名目部分,如下示例:$(notdir src/foo.c)以上腳本返回字符串“foo.c”. 7. h foreach 函數(shù)$(foreach ,)此函數(shù)的功能是把參數(shù)中的單詞逐一取出放到參數(shù)所指定的變量中,然后再執(zhí)行所包含的表達(dá)式。每一次會(huì)返回一個(gè)字符串,循環(huán)過(guò)程中,的所返回的每個(gè)字符串會(huì)以空格分隔,最后當(dāng)囫圇循環(huán)結(jié)束時(shí),所返回的每個(gè)字符串所組成的囫圇字符串(以空格分隔)將會(huì)是 foreach 函數(shù)的返回值。所以,最好是一個(gè)變量名,可以是一個(gè)表達(dá)式,而中普通會(huì)用法這個(gè)參數(shù)來(lái)依次枚舉中的單詞。如下示例:names := a b c dfiles := $(foreac

9、h n,$(names),$(n).o)以上腳本實(shí)現(xiàn)$(name)中的單詞會(huì)被挨個(gè)取出,并存到變量“n”中,“$(n).o”每次按照“$(n)”計(jì)算出一個(gè)值,這些值以空格分隔,最后作為 foreach 函數(shù)的返回,所以$(files)的值是“a.o b.o c.o d.o”。(注重,foreach 中的參數(shù)是一個(gè)暫時(shí)的局部變量,foreach 函數(shù)執(zhí)行完后,參數(shù)的變量將不在作用,其作用域只在 foreach 函數(shù)當(dāng)中)。3.4.5 在規(guī)章中用法通配符假如我們想定義一系列比較類(lèi)似的文件,我們很自然地就想起用法通配符。make 指令支持三種通配符:“*”,“?”和“.”,這是和 unix 的 b-

10、shell 是相同的?!啊弊址谖募幸灿斜容^特別的用途。假如是“/test”,這就表示當(dāng)前用戶(hù)根名目下的 test 文件。而“admin/test”則表示用戶(hù) admin 根名目下的 test 文件。通配符代替了一系列的文件,如“*.c”表示全部后綴為 .c 的文件。一個(gè)需要我們注重的是,假如我們的文件名中有通配符,如:“*”,那么可以用轉(zhuǎn)義字符“”,如“*” 來(lái)表示真切的“*”字符,而不是隨意長(zhǎng)度的字符串。下面我們來(lái)看幾個(gè)詳細(xì)的示例:clean:rm -rf *.o上面這個(gè)示例解釋通配符可以在規(guī)章的指令中用法。print: *.c上面這個(gè)示例解釋通配符可以在規(guī)章的依靠中用法objects = *.o上面這個(gè)示例表示了,通符同樣可以用在變量中。并不是說(shuō)*.o會(huì)綻開(kāi),objects 的值就是“*.o”。makefile中的變量其實(shí)就是 c/c+中的宏。假如你要讓通配符在變量中綻開(kāi),也就是讓 objects 的值是全部.o的文件名的集合,那么,你可以這樣:ob

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論