GNU M4宏处理器快速理解

来源:互联网 发布:淘宝企业店铺要交费吗 编辑:程序博客网 时间:2024/05/29 09:15

本文转载自http://utxz.com/142.html

 m4是一个通用的宏处理器,宏处理器(或预处理器)一般用作文本替换工具。最终用户经常会用它来处理要反复使用的文本模板,典型的是用于编程工具,还会用于文本编辑和文字处理工具。m4POSIX标准中的一部分,所有版本的UNIX下都可用。虽然这种语言可以单独使用,但大多数人需要m4仅仅是因为GNU autoconf中的“configure”脚本依赖它。

举个简单的例子就能很好的理解

创建文件:test.m4 :

执行命令:m4 test.m4

上述例子就是把 AUTHOREMAIL替换成m4定义的宏,关于详细的m4的语法定义可以参考如下文档

https://www.gnu.org/software/m4/m4.html

http://mbreen.com/m4.html

======================================

 

GNU Autoconf手册翻译


http://blog.csdn.net/yuzhangqiu/article/details/3860688


=======================================

原文http://blog.donews.com/groper/archive/2009/01/25/1463518.aspx

  • 定义宏:define(name, stuff)——参数:$1,$2,…
  • 取消宏的定义:undefine(`name´)
  • 重定义引号:changequote(…, …)
  • 检查是否定义某宏:ifdef(`name´, `then´, `else’ )
  • 参数+1:incr(…)
  • 表达式求值:eval(…)
  • 包含文件:include(filename)——不报错:sinclude(filename)
  •  输出转向:divert(n)
  • 取回被转向的文本:undivert(n)——省略n则取回所有
  • 当前转向文本编号:divnum
  • 系统命令:syscmd(…)
  • 条件测试:ifelse(a, b, c, d, e, f, g)——如果字符串 a 匹配字符串 b,结果为 c。否则,如果 d 同于 e,结果为 f。否则结果为 g。如果省略了最后的参数,结果为空。
  •  字符串长度:len(…)
  • 子串:substr(s,i,n)——起始于零
  • 子串位置:index(s1,s2)——s1中s2串的位置
  • 字符替换:translit(s,f,t))——通过把在 f 中找到的任何字符都替换为 t 中对应的字符修改 s
  • 删除跟随它的直到并包括下一个换行的所有字符:dnl
  • 写出到标准错误文件:errprint(`…’)
  • 转储定义的项的当前定义:dumpdef
  • 1 0
    原创粉丝点击