预处理文件,扩展宏定义。
m4 [ -e] [ -l ] [ -s ] [ -B Number ] [ -D Name [ =Value ] ] ... [ -H Number ] [ -I Directory ] [ -S Number ] [ -T Number ] [ -U Name ] ... [ File ... ]
m4 命令用作 C 和其它语言的预处理程序的一个宏处理程序。可以用它来处理内置宏或用户定义的宏。
按顺序处理每个 File 参数。如果没有指定 File 参数,或者如果指定了 -(短划线)作为文件名,那么 m4 命令读取标准输入。它将处理过的宏写到标准输出中。宏调用采用以下格式:
macroname(argument . . . )
左括号必须紧接着 macroname。如果左括号没有紧跟着定义的宏名,那么 m4 命令将它当作不带参数的宏调来读取。宏名由 ASCII 字母、数字和 _(下划线)字符组成。扩展字符不允许出现在宏名中。第一个字符不能为数字。
收集参数时,m4 命令忽略宏名的开头未加引号的空格、制表符和换行符。使用单引号将字符串括起来。括起来的字符串的值是将引号去掉后的字符串。
当 m4 命令识别一个宏时,它以搜索匹配的右括号的方式收集参数。如果提供的参数比宏定义中的少,那么 m4 命令认为定义末尾出现的参数为空。在收集参数的过程中,宏求值处理正常进行。所有在嵌套调用值中的逗号或右括号被逐字转换;它们不需要一个转义字符或引号。收集参数后,m4 命令将宏的值推回到输入流并再次扫描。
以下内置宏在 m4 命令中是可用的。可以重新定义它们,但可能会丢失原始含义。这些宏的值是空的,除非另有说明:
前面的标志必须出现在任何文件名和任何 -D 或 -U 标志之前。
-D Name[=Value] | 将 Name 变量定义为 Value 变量。如果不指定 Value 变量,则 Name 变量为空。 |
-U Name | 取消定义以前由 -D 标志定义的 Name 变量。 |
这条命令返回以下退出值:
0 | 成功结束。 |
>0 | 发生错误。 |
如果使用 m4exit 宏,那么可以由输入文件指定退出值。
要用 m4 命令预处理一个 C 语言程序并进行编译,请输入:
m4 prog.m4 > prog.c cc prog.c
/usr/ccs/bin/m4 | 包含 m4 命令。 |
AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 m4 Macro Processor Overview。
《AIX 5L V5.2 系统用户指南:操作系统与设备》中的『命令概述』。