Make內建的subst函式的使用注意事項

2021-09-01 02:25:33 字數 693 閱讀 2762

subst函式是make工具內建的乙個文字處理函式,用於實現文字中字串替換或者刪除操作。

函式原型

$(subst from, to, text)
具體作用為將文字text中from字串替換為to字串。返回值為進行替換操作後的新字串,而原有的text字串保持不變。

($subst a,b,abc)
上述的make語句將會返回字串bbc。

$(subst $(a),$(b),$(str))
字串刪除的本質上將目標字串替換為乙個空值,以實現文字中指定字串刪除的作用。如下例項的功能為刪除變數cc_compile_flag中與變數only_cc_compile_flag相匹配的部分。

$(subst $(only_cc_compile_flag),,$(cc_compile_flag))
執行subst函式的時候將會提供乙個返回值。使用者必須指定乙個返回值用於承接返回值,否則將會有「missing separator」報錯資訊輸出。完整的使用方式如下所示。

cxx_compile_flag := $(subst $(only_cc_compile_flag),,$(cc_compile_flag))

make內建函式call

在make中,內建函式call用來擴充套件變數或者巨集,它的語法如下 call macro name param1 call會擴充套件它的第乙個引數並把其餘引數依次替換到出現 1 2 的地方,macro name 可以是任何巨集或變數的名稱。macro name之後是巨集的引數,並以逗號為分隔符。c...

對內建函式make和new的理解

make用於內建型別 map slice 和channel 的記憶體分配。new用於各種型別的記憶體分配。new就是new 跟所有語言的new一樣的,make主要是用來處理chan 和陣列切片和map對於new出來的結構體會進行初始化,但是如果new乙個切片型別的 new int 那麼這個切片是沒有...

go內建函式new和make的區別

new 內建函式分配記憶體。其第乙個實參為型別,而非值,其返回值為指向該型別的新分配的零值的指標。make 內建函式分配並初始化乙個型別為且僅為slice map 或chan的物件。與 new 相同的是,其第乙個實參為型別,而非值。不同的是,make 的返回型別 與其引數相同,而非指向它的指標。其具...