10.1宏定义

宏:AC_DEFUN公司 (名称,[身体])

Autoconf宏使用AC_DEFUN公司宏,它是类似于M4内置m4_定义宏;这将创建一个宏命名名称身体作为其扩展。除了定义宏,AC_DEFUN公司添加一些用于约束宏的调用顺序,同时避免冗余输出(请参见先决条件宏).

Autoconf宏定义如下所示:

AC_DEFUN公司(宏观名称,宏观机构)

可以将传递给宏的任何参数引用为“1美元’,$2'等,参见如何定义新宏在里面GNU M4,获取有关编写M4宏的更多完整信息。

大多数宏属于两大类之一。第一类包含接受参数的宏,以便生成输出由这些参数参数化。此类别中的宏是设计的直接展开,通常是多次,不应用作的论点空调_设备。其他类别包括宏它们是固定文本块的缩写,因此不采用论点。对于此类宏,直接展开宏多次会导致冗余输出,因此更常用宏作为参数空调_设备,或声明宏具有AC_DEFUN_ONCE公司(请参见一拍宏).

确保正确引用宏观机构 这个宏观名称如果宏碰巧有之前已定义。

每个宏都应该有一个标题注释,该注释给出了它的原型,并且简要说明。当参数具有默认值时,将其显示在原型。例如:

#AC_MSG_ERROR(错误,[退出状态=1])# --------------------------------------m4_定义([AC_MSG_ERROR],[{AS_MESSAGE([错误:$1],[2])退出m4_default([$2],[1]);}])

有关宏的注释应留在标题注释中。大多数其他评论进入配置,所以继续使用'#'以介绍评论。

如果您对纯M4代码有一些特殊注释毫无意义配置在标题注释中,然后使用内置dnl公司:导致M4放弃文本通过下一条换行线。

请记住dnl公司很少需要介绍评论;dnl公司更有用的是删除宏后面的换行不产生输出,例如空调_设备.

需要使用的公共第三方宏AC_DEFUN公司,而不是m4_定义,以便由找到无焦点的(请参见延伸aclocal在里面可移植的源代码).此外,如果确定应创建宏过时,很容易从AC_DEFUN公司AU_DEFUN(默认值)为了拥有自动更新帮助用户选择更好的选择,但没有相应的方法m4_定义发布升级通知(请参阅自动驾驶仪).

在使用m4_定义AC_DEFUN公司:只有前者不受空调_设备。写入文件时,替换带有m4_定义将展开为相同的宏文本。但将文本块替换为AC_DEFUN公司带有的宏相同的内容不一定会产生相同的结果,因为更改任何嵌入但不满意的位置空调_设备块中的调用将被扩展。对于示例,请参见在需要之前展开.