makefile中 和 的區別

2022-04-05 08:32:34 字數 599 閱讀 5369

經常有人分不清= 、:=和+=的區別 這裡我總結下做下詳細的分析:

首先你得清楚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出錯 最...