經常有人分不清= 、:=和+=的區別 這裡我總結下做下詳細的分析:
首先你得清楚makefile的執行環境,因為我是linux系統,那麼我得執行環境是shell
在linux的shell裡,shell只認識字串,所以你就不要說整形什麼的了。說值也不貼切。
先看+=是什麼意思?
因為shell只認識字串,所以這裡應該不難聯想到+=就是字串連線的意思。相當於c語言的 strcat
舉個例子:
x本來是 u;
x += sb;
那麼執行結果就是 x為usb;
接著理解:=和=
這個是很常用的,比=用得多
看下面的例子:
x = sb;
y = u$(x)
x = all
執行結果x 是all y是uall
將=改成:=
x := sb;
y := u$(x)
x := all
執行結果x是all y是usb
怎麼樣?有感覺了吧。這裡=的話算$(x)的時候會一直搜尋到檔案最後,最後再賦值。
而:=則不會搜尋後面的x值。也就是前面的是有效的而引用變數之後的就是無效的。
Makefile 中 和 的區別
是最基本的賦值 是覆蓋之前的值 是如果沒有被賦值過就賦予等號後面的值 是新增等號後面的值makefile中 和 的區別到底有什麼區別,看兩個簡單的makefilex foo y x bar x xyz all echo y 執行make後,得到結果 xyz barx foo y x bar x xy...
makefile中 和「 」的區別
在makefile中,經常能看到這種賦值方式 mynumber 123 這種方式洋名叫做expansion assignment,翻譯過來叫擴充套件賦值,我一般就叫冒號等號。這位同學就問了,那麼它和普通的等號有啥不一樣捏?咱們廢話少說,直接看 animal frog var animal dog c...
Java中 和 的區別
第十一,short s1 1 s1 s1 1 有什麼錯?short s1 1 s1 1 有什麼錯?引出一下討論。賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。所以s1 s1 1出錯 最...