autoconf手册建议使用AS_IF
代替if
,但不提及m4_if
。 AS_IF
还应优先于m4_if
吗?
本手册的"Limitations of Builtins"部分说明了使用AS_IF
的可移植性,但AC_REQUIRE
description表示要使用它来扩展所需的宏。
我应该始终使用AS_IF
吗?答案似乎是肯定的,但我再次看到if
和m4_if
在其他宏中使用。什么时候可以不使用AS_IF
?
答案 0 :(得分:3)
我对此感到困惑,因为我没有意识到if
/ AS_IF
和m4_if
之间的根本区别。正常的if
和AS_IF
会在用户运行脚本时评估其条件,即configure
。相反,m4_if
在宏扩展期间有条件评估,即autoreconf
。
if
/ AS_IF
会影响脚本的流程。 m4_if
会影响脚本的内容。
现在这似乎很明显,但我起初并没有得到它。希望这有助于其他人。
答案 1 :(得分:2)
AS_IF的另一个好处是,当它扩展时,分支中宏所需的任何宏都会在测试之前展开。
请参阅the manual。