Shell autoconf:我应该总是使用AS\u IF over IF和m4\u IF吗?

Shell autoconf:我应该总是使用AS\u IF over IF和m4\u IF吗?,shell,autoconf,m4,Shell,Autoconf,M4,autoconf手册建议使用作为IF而不是IF,但没有提到m4 IF。AS_IF是否也应优先于m4_IF 手册的这一部分说要像使用一样使用,以实现它的可移植性,但手册中说要使用它来扩展所需的宏 我是否应该总是像使用一样使用?答案似乎是肯定的,但我再次看到其他宏中使用了if和m4\u if。什么时候可以不使用AS_IF?AS_IF的另一个好处是,当它展开时,分支中的宏所需的任何宏都会在测试之前展开 请参阅。我对此感到困惑,因为我没有意识到if/AS_if和m4_if之间的根本区别。当用户运行脚本时

autoconf手册建议使用
作为IF
而不是
IF
,但没有提到
m4 IF
AS_IF
是否也应优先于
m4_IF

手册的这一部分说要像使用一样使用
,以实现它的可移植性,但手册中说要使用它来扩展所需的宏


我是否应该总是像使用
一样使用
?答案似乎是肯定的,但我再次看到其他宏中使用了
if
m4\u if
。什么时候可以不使用
AS_IF

AS_IF的另一个好处是,当它展开时,分支中的宏所需的任何宏都会在测试之前展开


请参阅。

我对此感到困惑,因为我没有意识到
if
/
AS_if
m4_if
之间的根本区别。当用户运行脚本时,正常的
if
AS_if
会评估它们的条件,即
configure
。相反地,
m4\u if
在宏扩展期间对其条件进行了求值,即
autoeconf

if
/
如同_if
影响脚本流一样<如果
影响脚本内容,则代码>m4_


这一点现在看来很明显,但我一开始并没有明白。希望这对其他人有所帮助。

这并不是说什么时候使用
if
和什么时候使用
AS\u-if
。我认为大家的共识是总是使用
AS\u-if
而不是
if
,因为你可以更好地引用,等等。