:= と += は Linux カーネル Makefile で同じであり、同じ意味で使用できますか? そうでない場合、2つの違いは何ですか?
質問する
326 次
4 に答える
9
他の人が言うように、:=
割り当てです。
しかし、 と の間には微妙な違いが:=
あり=
ます。ほとんどの場合、それは問題ではありませんが、大きな違いを生む可能性があります。
X = $(Y)
X
は、C プリプロセッサ マクロのような再帰変数として定義されます。
が参照されるたびX
に、 の値Y
が使用されます。
が展開されたときに展開が発生X
します。Y
したがって、 を定義した後で定義することができ、それでX
問題ありません。
X := $(Y)
X
単純な変数として定義します。これは C の代入に似ています。
現在、Y
は定義時に展開されているため、後で変更しても何も起こりません。
X += $(Y)
に追加されX
ますが、その型は保持されます。以前に で定義されていた
場合、はすぐには展開されません。定義されていない場合も同じです。以前に で定義されていた
場合は、すぐに展開されます。X
=
Y
X
X
:=
Y
この例のmakefileを試すことができます:
X = 1
Y = $(X)
Z := $(X)
X = 2
Y += $(X)
Z += $(X)
X = 3
test:
@echo "Y = $(Y)"
@echo "Z = $(Z)"
印刷します
Y = 3 3
Z = 1 2
于 2012-07-05T07:53:42.480 に答える
3
:= は =, i に似ています。e 課題です。
+= は、連結と代入の演算子です。
例:
VARIABLE := abc
# here VARIABLE is abc
VARIABLE := def
# VARIABLE is now def only!
VARIABLE_2 = abc
# VARIABLE_2 is now abc
VARIABLE_2 += def
# VARIABLE_2 is abc def
于 2012-07-05T06:50:06.917 に答える
0
:=
課題です。 +=
連結です。こちらをご覧ください。
于 2012-07-05T06:52:16.417 に答える