欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

變量和不同的賦值方式(四)

        在 makefile 中是支持程序設(shè)計(jì)語言中變量的概念的,makefile 中的變量只代表文本數(shù)據(jù)(字符串)。那么在 makefile 中的變量名的規(guī)則又有哪些呢?a> 變量名可以包含字符、數(shù)字以及下劃線;b> 不能包含 ":" , "#" , "=" 或 " ";c> 變量名大小寫敏感。下來我們來看看變量的定義和使用,如下

創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、開平網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為開平等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

變量和不同的賦值方式(四)

        下來我們以代碼為例來進(jìn)行分析說明

CC := gcc
TARGET := hello.out

$(TARGET) : func.o main.o
    $(CC) -o $(TARGET) func.o main.o

func.o : func.c 
    $(CC) -o func.o -c func.c

main.o : main.c
    $(CC) -o main.o -c main.c

.PHONY : rebuild clean all

rebuild : clean all

all : $(TARGET)
    
clean : 
    rm *.o $(TARGET)

        我們來看看編譯結(jié)果是否和之前一樣

變量和不同的賦值方式(四)

        效果和之前是一樣的,那么我們?yōu)楹芜@樣定義變量呢?在一些大型的工程項(xiàng)目中,我們可能要編譯好幾個(gè)版本,因此定義不同的 TARGET 便會編譯出不同的版本。而且這種方法還有個(gè)好處就是編譯器可以由我們自定義選擇,比如我們將上面的 gcc 編譯器換成 g++,則只需將 CC := gcc 換成 CC := g++,下來我們來看看編譯效果

變量和不同的賦值方式(四)

        我們看到編譯器已經(jīng)換為 g++ 了。下來我們來講講 makefile 中變量的賦值方式,分為四種:a> 簡單賦值(:=);b> 遞歸賦值(=);c> 條件賦值(?=);d> 追加賦值(+=)。那么不同的賦值方式其意義是不同的!下來我們來對這四種賦值方式進(jìn)行一一的解釋說明

        a> 簡單賦值(:=):程序設(shè)計(jì)語言中的通用的賦值方式,只針對當(dāng)前語句的變量是有效的。其用法如下

變量和不同的賦值方式(四)

        b> 遞歸賦值(=):賦值操作可能影響多個(gè)其他變量,所有與目標(biāo)變量相關(guān)的其他變量都將受到影響。其用法如下

變量和不同的賦值方式(四)

        c> 條件賦值(?=):如果變量未定義,使用賦值符號中的值定義變量;如果變量已經(jīng)定義,則賦值無效。其用法如下

變量和不同的賦值方式(四)

        d> 追加賦值(+=):原變量值之后加上一個(gè)新值,原變量值與新值之間由空格隔開。其用法如下

變量和不同的賦值方式(四)

        下來我們還是以代碼為例來進(jìn)行說明

# ex1 (:=)
x := foo
y := $(x)b
x := new

.PHONY : test

test :
    @echo "# ex1 (:=)"
    @echo "x => $(x)"
    @echo "y => $(y)"

        經(jīng)過簡單賦值后,x 就為 new 了,而 y 則應(yīng)該為 foob。我們來看看編譯效果

變量和不同的賦值方式(四)

        我們看到結(jié)果和我們所分析的是一樣的。下來我們來看看遞歸賦值

# ex2 (=)
x = foo
y = $(x)b
x = new

.PHONY : test

test :
    @echo "# ex2 (=)"
    @echo "x => $(x)"
    @echo "y => $(y)"

        我們分析下,因?yàn)檫f歸賦值是與目標(biāo)相關(guān)的其他變量都會受到影響,那么 x 最后應(yīng)該為 new,y 就應(yīng)該為 newb。我們來看看編譯結(jié)果

變量和不同的賦值方式(四)

        為了更加形象對遞歸賦值進(jìn)行說明,我們編寫代碼如下

a = $(b)
b = $(c)
c = hello-makefile

.PHONY : test

test :
    @echo "# ex2 (=)"
    @echo "x => $(x)"
    @echo "y => $(y)"
    @echo "a => $(a)"
    @echo "b => $(b)"
    @echo "c => $(c)"

        我們定義 a 依賴于 b,而 b 依賴于 c。此時(shí) c 為 hello-makefile,那么依賴于它的 b 也就變?yōu)?hello-makefile 了,此時(shí)依賴于 b 的 a 也就變?yōu)?hello-makefile 了。x 和 y 此時(shí)沒定義,看看編譯會報(bào)錯(cuò)嗎?

變量和不同的賦值方式(四)

        編譯是通過的,證明在 makefile 中是支持這樣的寫法的,x 和 y 沒定義,自然也就為空了。那么 a,b,c 和我們所分析的是一樣的。所以在 makefile 中我們一般是很少直接用遞歸賦值的,因?yàn)橛锌赡軙庀氩坏降馗淖円蕾囉谒哪繕?biāo)。下來我們來看看條件賦值

# ex3 (?=)
x := foo
y := $(x)b
x ?= new

.PHONY : test

test :
    @echo "# ex3 (?=)"
    @echo "x => $(x)"
    @echo "y => $(y)"

        我們在最后對 x ?= new,意思是如果前面沒定義的話,此時(shí)它便為 new。所以 x 最后應(yīng)該為 foo,y 就應(yīng)該為 foob。我們來看看編譯結(jié)果

變量和不同的賦值方式(四)

        結(jié)果確實(shí)是這樣的,一般我們會在新定義變量時(shí)采用這樣的寫法,以防止改變之前定義時(shí)的語義。最后看看追加賦值

# ex4 (+=)
x := foo
y := $(x)b
x += new

.PHONY : test

test :
    @echo "# ex4 (+=)"
    @echo "x => $(x)"
    @echo "y => $(y)"

        根據(jù)追加賦值的定義,它是直接在后面加上,但是有一個(gè)空格。所以 x 最后應(yīng)該為 foo new,y 就應(yīng)該為 foob。我們來看看編譯結(jié)果

變量和不同的賦值方式(四)

        我們看懂啊效果確實(shí)是這樣的,通過對四種賦值方式的學(xué)習(xí),我們發(fā)現(xiàn)簡單賦值是跟 C 語言中是一樣的。追加賦值和 C++ 語言中的語義也是一樣的,一般在大型項(xiàng)目中是不會采用遞歸賦值這種寫法的。

        歡迎大家一起來學(xué)習(xí) makefile,可以加我QQ:243343083。

本文標(biāo)題:變量和不同的賦值方式(四)
URL網(wǎng)址:http://www.aaarwkj.com/article14/gjjdge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、小程序開發(fā)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站維護(hù)、網(wǎng)站收錄手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
96热久久这里只有精品| 亚洲三级伦理中文字幕| 欧美av在线免费观看| 国产av一区二区三区最新精品| 国产精品一区二区毛卡片| 亚洲欧美中文日韩二区一区| av 一区二区三区av| 亚洲av成人精品日韩一区麻豆| 国产精品一区二区久久| 91成人大片在线观看| 激情欧美一区二区三区精品| 国产一区国产二区中文字幕| 国内久久婷婷综合五月趴| 国产精品—色哟哟视频| 熟妇女人妻丰满少妇中文| 国产熟女乱免费一区二区| 女性裸体无遮挡啪啪网站| 四虎精品国产一区二区三区| 97在线观看视频在线观看| 久久久人妻精品少妇av| 成人欧美一区二区三区av | 九九九热精品视频在线观看| 色花堂国产精品第二页| 久久精品中文字幕人妻| 老牛av一区二区三区| 欧美精品欧美激情免费区| 91在线人妻一区二区三区| 亚洲av日韩av高潮| 欧美三级高清视频在线播放| 欧美精品国产亚洲另类| 成熟女人毛茸茸的视频| 国产精品综合久久蜜臀av| 91精品国产自产永久在线| 成人欧美一区二区三区av| 免费高清日本一区二区三区视频| 国产精品免费网站在线观看| 禁止18岁以下观看的视频| 日本午夜专区一区二区| 日韩精品一区高清视频| 亚洲各类熟女们中文字幕| 中文国产人精品久久蜜桃|