在makefile中,經常能看到這種賦值方式:
mynumber := 123
這種方式洋名叫做expansion assignment, 翻譯過來叫擴充套件賦值, 我一般就叫冒號等號。這位同學就問了,那麼它和普通的等號有啥不一樣捏?咱們廢話少說,直接看**。
animal =frogvar = "
$(animal) dog cat
"animal = tiger
test:
echo $(var)
輸出是:
tiger dog cat
再來看冒號等號的輸出和上面有啥不一樣:
animal :=frogvar := "
$(animal) dog cat
"animal :=tiger
test:
echo $(var)
輸出時:
frog dog cat
看出來**不一樣了嗎?
沒錯,直接使用"=",變數在呼叫的時候一起展開,也就是在執行"echo $(var)"的時候;但是使用":="的時候,變數在賦值的時候就展開了。
Makefile 中 和 的區別
是最基本的賦值 是覆蓋之前的值 是如果沒有被賦值過就賦予等號後面的值 是新增等號後面的值makefile中 和 的區別到底有什麼區別,看兩個簡單的makefilex foo y x bar x xyz all echo y 執行make後,得到結果 xyz barx foo y x bar x xy...
makefile中 和 的區別
經常有人分不清 和 的區別 這裡我總結下做下詳細的分析 首先你得清楚makefile的執行環境,因為我是linux系統,那麼我得執行環境是shell 在linux的shell裡,shell只認識字串,所以你就不要說整形什麼的了。說值也不貼切。先看 是什麼意思?因為shell只認識字串,所以這裡應該不...
Java中 和 的區別
第十一,short s1 1 s1 s1 1 有什麼錯?short s1 1 s1 1 有什麼錯?引出一下討論。賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。所以s1 s1 1出錯 最...