0
다음 코드평가 조건문이
ifeq (1,1)
a = 1
$(info true)
endif
ifeq (1,0)
a = 0
$(info false)
endif
$(info $(a))
인쇄
true
1
하게 그리고 나는 그것을 얻을. 나는
define
내에서 같은 일을 넣고 평가한다면 (
$(a)
의 값이 드디어 1로)
define foo
ifeq (1,1)
a = 1
$(info true)
endif
ifeq (1,0)
a = 0
$(info false)
endif
endef
$(eval $(call foo))
$(info $(a))
IT는 ifeq (1,0)
이 true로 평가하지 않습니다
true
false
1
를 인쇄합니다. 그런데 왜 false
이 인쇄 되었습니까?
아 : 당신은
eval
가$
탈출하여 검사하고info
때까지 연기 할 필요가있다. 역 참조 구문으로 인해 내장 함수가 실행되었습니다. 말이된다. 감사. – Jeenu확장 기능을 사용하면 모든 변수와 함수가 확장되거나 확장되지 않습니다. 그리고 확장은 재귀 적입니다. 그것을 피할 수있는 유일한 방법은'$'를 벗어나거나'$ (value ...)'함수를 사용하는 것입니다. – MadScientist