= 是最基本的賦值
:= 是覆蓋之前的值
?= 是如果沒有被賦值過就賦予等號後面的值
+= 是新增等號後面的值
makefile中「=」和「:=」的區別到底有什麼區別,看兩個簡單的makefile
x = foo
y = $(x) bar
x = xyz
all:
@echo "$(y)"
執行make後,得到結果
xyz bar
x := foo
y := $(x) bar
x := xyz
all:
@echo "$(y)"
執行make後,得到結果
foo bar
可以看到使用「:=」使用的是賦值時的值,也就是在y := $(x) bar時x的值,此時x的值為bar,所以y的值為 foo bar。
使用「=」,使用的是最終的值,也就是在y = $(x) bar賦值時,使用的是最後的x的值,為xyz,所以最後的y值為xyz bar。
makefile中 和 的區別
經常有人分不清 和 的區別 這裡我總結下做下詳細的分析 首先你得清楚makefile的執行環境,因為我是linux系統,那麼我得執行環境是shell 在linux的shell裡,shell只認識字串,所以你就不要說整形什麼的了。說值也不貼切。先看 是什麼意思?因為shell只認識字串,所以這裡應該不...
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出錯 最...