makefile之call函數(shù)

call函數(shù)是唯一一個(gè)可以創(chuàng)建定制化參數(shù)函數(shù)的引用函數(shù)。
支持對自定義函數(shù)的引用;
支持將一個(gè)變量定義為一個(gè)復(fù)雜的表達(dá)式,用call函數(shù)根據(jù)不同的參數(shù)對它進(jìn)行展開來獲取不同的結(jié)果;

函數(shù)語法:
$(call VARIABLE,PARAM,PARAM,...)

函數(shù)功能:
在執(zhí)行時(shí),將它的參數(shù)"PARAM"依次賦給臨時(shí)變量"$(1)","$(2)".call對參數(shù)的數(shù)目沒有限制壤躲,也可以沒有參數(shù)值溜哮。
最后再對VARIABLE展開后的表達(dá)式進(jìn)行處理.
函數(shù)返回值:
VARIABLE展開后的表達(dá)式的值
函數(shù)說明:
1. 變量VARIABLE在定義時(shí)最好定義為遞歸展開式;
2. call函數(shù)中對VARIABLE的調(diào)用,直接給函數(shù)或變量名就好了袁余,不要用"$";
3. 多個(gè)PARAM使用逗號分割開,且逗號和PARAM之間不能有空格,否則會導(dǎo)致解析異常;(PS:我自己在這個(gè)挖過坑,因?yàn)榱?xí)慣c編碼時(shí)粉洼,在逗號后面加一個(gè)空格)

1. 變量的引用

1.1 變量定義為直接展開式

如果這里將VARIABLE1定義為直接展開式,最終調(diào)用call函數(shù)后,返回值為空
我的理解是,直接展開式在定義時(shí)將(1)和(2)展開,而此時(shí)它們的值為空,所以變量的值為空.當(dāng)執(zhí)行到call函數(shù)時(shí)叶摄,盡管帶上了需要傳遞的參數(shù),但PARAM((1)和(2))之前已經(jīng)被展開了,故此時(shí)已經(jīng)取不到傳遞進(jìn)來的參數(shù)值.

VARIABLE1 := $(2) $(1)

$(info 1-$(VARIABLE1))

aa=$(call VARIABLE1,hello,world)

$(info 1-$(aa))
all:
    @echo Done

1.2 變量定義為遞歸展開式

VARIABLE1 = $(2) $(1)

$(info 2-$(VARIABLE1))

aa=$(call VARIABLE1,hello,world)

$(info 2-$(aa))
all:
    @echo Done

這里變量類型的定義再羅嗦一下,所謂的直接展開式,即在定義的時(shí)候立即展開;遞歸展開式,在定義的時(shí)候其實(shí)相當(dāng)于聲明,只有在實(shí)際引用時(shí)才展開.

2. 函數(shù)的引用

2.1 不帶參數(shù)的函數(shù)引用

define FUNC1
$(info echo 3-"hello")
endef
$(call FUNC1)
all:
    @echo Done

2.2 帶參數(shù)的函數(shù)引用

define FUNC1
$(info echo 4-$(1) $(2))
endef

$(call FUNC1,hello,wolrd)

all:
    @echo Done

2.3 逗號和參數(shù)之間有空格的示例

define FUNC1
$(info echo 5-$(1) $(2))
endef

$(call FUNC1, hello, wolrd)

all:
    @echo Done

從執(zhí)行的結(jié)果會發(fā)現(xiàn),逗號和參數(shù)之間的空格也被作為參數(shù)的一部分.在這個(gè)例子中可能看不出明顯的負(fù)面影響,后面我在舉個(gè)栗子.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末属韧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛤吓,更是在濱河造成了極大的恐慌宵喂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件会傲,死亡現(xiàn)場離奇詭異锅棕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)淌山,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門裸燎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人泼疑,你說我怎么就攤上這事德绿。” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵移稳,是天一觀的道長蕴纳。 經(jīng)常有香客問我,道長个粱,這世上最難降的妖魔是什么古毛? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮几蜻,結(jié)果婚禮上喇潘,老公的妹妹穿的比我還像新娘。我一直安慰自己梭稚,他們只是感情好颖低,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弧烤,像睡著了一般忱屑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上暇昂,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天莺戒,我揣著相機(jī)與錄音,去河邊找鬼急波。 笑死从铲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澄暮。 我是一名探鬼主播名段,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泣懊!你這毒婦竟也來了伸辟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤馍刮,失蹤者是張志新(化名)和其女友劉穎信夫,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卡啰,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡静稻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碎乃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姊扔。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖梅誓,靈堂內(nèi)的尸體忽然破棺而出恰梢,到底是詐尸還是另有隱情佛南,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布嵌言,位于F島的核電站嗅回,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏摧茴。R本人自食惡果不足惜绵载,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苛白。 院中可真熱鬧娃豹,春花似錦、人聲如沸购裙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏率。三九已至躯畴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間薇芝,已是汗流浹背蓬抄。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夯到,地道東北人嚷缭。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像耍贾,于是被迫代替她去往敵國和親峭状。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,797評論 0 38
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評論 0 5
  • 看到《愛有來生》這個(gè)電影是偶然逼争,那時(shí)我在論壇上漫無目的閑逛,就這么不期而遇劝赔。 電影海報(bào)吸引了我誓焦,兩排銀杏鋪天蓋地,...
    魚思南閱讀 532評論 3 6
  • 特別怕別人來和我訴說情緒 我怕我的表情 我的語言 我的行為 沒能安撫你的情緒 或 接受你傳達(dá)的問題并很好的答復(fù)你 ...
    三尺木閱讀 299評論 0 0
  • XSS 跨站腳本攻擊 原理 XSS 其實(shí)就是所謂的 HTML 注入着帽,攻擊者的輸入沒有經(jīng)過后臺的過濾直接進(jìn)入到數(shù)據(jù)庫...
    初七123閱讀 4,377評論 0 3