10.1宏定义
- 宏:AC_DEFUN公司 (名称,[身体])¶
-
Autoconf宏使用AC_DEFUN公司
宏,它是类似于M4内置m4_定义
宏;这将创建一个宏命名名称和身体作为其扩展。除了定义宏,AC_DEFUN公司
添加一些用于约束宏的调用顺序,同时避免冗余输出(请参见先决条件宏).
Autoconf宏定义如下所示:
可以将传递给宏的任何参数引用为“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公司
带有的宏相同的内容不一定会产生相同的结果,因为更改任何嵌入但不满意的位置空调_设备
块中的调用将被扩展。对于示例,请参见在需要之前展开.