在ifdef中的m4中有条件地定义宏



这是我第一次使用m4,我很难根据是否已经定义了另一个宏来有条件地定义宏。

我面临的问题是test.m4文件中的以下片段:

ifdef(`MANPAGE', define(_NAME, `NAME'), define(_NAME, `Name'))
_NAME

作为C中的一个类比,我试图实现的是这样的东西:

#ifdef MANPAGE
#define _NAME "NAME"
#else
#define _NAME "Name"
#endif

现在,当我运行m4 -DMANPAGE test.m4时,我会得到Name的输出,而我希望输出是Name。无论是否指定了-DMANPAGE,我总是得到输出Name

我不确定自己哪里出了问题,即使在参考了m4手册页和其他在线文章后,我也无法找到解决方案。在StackOverflow上,我确实提到了以下帖子,这些帖子似乎有一些意义:M4和正在转义m4 ifdef语句中的逗号。

然而,我仍然没有取得任何进展。任何建议都将不胜感激。

提前感谢!

试试这个:

ifdef(`MANPAGE', `define(_NAME, `NAME')', `define(_NAME, `Name')')

我相信参数在传递到ifdef之前已经扩展

相关内容

  • 没有找到相关文章

最新更新