GNU M4宏处理器快速理解

20 篇文章 0 订阅
7 篇文章 0 订阅

本文转载自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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值