我問了一個關於cmake和傳遞變量here的問題。我可以使它工作,但只有當我在函數中命名變量的方式與父範圍中的變量不同時,我將其稱爲函數。因此,在本質:奇怪的函數參數名稱行爲
function(strange name)
message(STATUS ${name})
message(STATUS ${${name}})
endfunction()
set(name foo)
set(anothername foo)
strange(name)
strange(anothername)
導致:
-- name (message(STATUS ${name}) for var "name")
-- name (message(STATUS ${${name}}) for var "name")
-- anothername message(STATUS ${name}) for var "anothername")
-- foo (message(STATUS ${${name}}) for var "anothername")
是不是有點不可思議?發生了什麼? 我認爲函數的行爲不應該取決於父範圍中變量的命名 - 是否應該?
任何澄清是非常感謝!
+1一個明確的答案。不確定我會贊成你的請願,但: - )如果有的話,我更喜歡'AUTHOR_WARNING'類型的消息,警告隱藏父親的局部變量。 – Fraser
感謝您的確切答案! – nandaloo