autoconf 手册建议使用AS_IF
而不是if
,但没有提及m4_if
. 也应该AS_IF
优先于m4_if
?
手册的“内置函数的限制”部分说使用AS_IF
它的可移植性,但AC_REQUIRE
描述说使用它来扩展所需的宏。
我应该一直使用AS_IF
吗?答案似乎是肯定的,但我又看到if
并m4_if
在其他宏中使用。什么时候可以不使用AS_IF
?
autoconf 手册建议使用AS_IF
而不是if
,但没有提及m4_if
. 也应该AS_IF
优先于m4_if
?
手册的“内置函数的限制”部分说使用AS_IF
它的可移植性,但AC_REQUIRE
描述说使用它来扩展所需的宏。
我应该一直使用AS_IF
吗?答案似乎是肯定的,但我又看到if
并m4_if
在其他宏中使用。什么时候可以不使用AS_IF
?
我对此感到困惑,因为我没有意识到if
/AS_IF
和之间的根本区别m4_if
。当用户运行脚本时,正常if
并AS_IF
评估其条件,即configure
. 相反,m4_if
在宏扩展期间对其条件进行评估,即autoreconf
.
if
/AS_IF
影响脚本的流程。m4_if
影响脚本的内容。
这现在似乎很明显,但我一开始并没有得到它。希望这对其他人有帮助。
AS_IF 的另一个好处是,当它展开时,分支中的宏需要的任何宏都会在测试之前展开。
请参阅手册。