我试图用 if( 使用 GNU m4 1.4.14 替换 if 并且我ERROR: end of file in argument list
在尝试时收到:
define(`if', `if(')
define(`then', `){')
define(`fi', `}')
if foo then bar() fi
我曾尝试转义括号,但这会导致 m4 在短暂的一段时间后出错,说它内存不足。浏览手册,我没有发现与此问题相关的任何内容。
将宏的名称更改为“IF”或“if”以外的名称后,它按预期工作,这让我相信它正在反复评估自己。
如果是这样,我如何定义一个只评估一次的宏?否则,我应该如何解决这个问题?
编辑我通过处理两次找到了解决此问题的方法,一次将 if 转换为 _IF,下一次将 _IF 转换为 if(。我认为有更好的方法可以做到这一点,所以这只是我眼中的临时解决方案。