8.3.8 M4中的算术计算

以下宏便于整数算术运算。

如果参数被记录为采用算术表达式,则可以使用任何可以由m4_值.任何其他数字参数都应该由后面的可选符号组成一个或多个十进制数字;它被视为十进制整数。

扩展为数字的宏的作用是“0',或可选-'后跟非零十进制数字,后跟零或更多十进制数字。

由于4米限制、算术表达式和数字参数应该只使用适合32位有符号的数字整数。

宏:4立方厘米 (表达-1,表达-2)

比较算术表达式表达-1表达-2、和展开到'-1'如果表达-1更小,'0'如果他们是相等,和'1'如果表达-1更大。

宏:m4_列表_cmp (列表-1,列表-2)

比较由逗号分隔算法组成的两个M4列表表达式,从左到右。扩展到'-1'用于第一个元素值来自的配对列表-1更小,'1'其中值来自列表-2较小,或'0'如果两个列表都有相同的值。如果一个列表短于另一个列表,则其余列表将较长列表中的元素与零进行比较。

m4_list_cmp([1,0],[1])0m4_list_cmp([1,[1*0]],[1,0])0m4_list_cmp([1,2],[1,0])1m4_list_cmp([1,[1+1],3],[1,2])1m4_list_cmp([1,2,-3],[1,2])⇒-1m4_list_cmp([1,0],[1,2])⇒-1m4_list_cmp([1],[1],2])⇒-1
宏:最大m4 (参数, …)

此宏在Autoconf 2.62中引入。展开到值所有参数中的最大算术表达式。

宏:m4_分钟 (参数, …)

此宏在Autoconf 2.62中引入。展开到值所有参数中的最小算术表达式。

宏:m4_签名 (快递)

展开到'-1'如果算术表达式快递为负值,1“如果是正面的,并且”0'如果它为零。

宏:m4_版本比较 (版本-1,版本-2)

此宏在Autoconf 2.53中引入,但有许多直到Autoconf 2.62才解除的可用性限制。比较版本字符串版本-1版本-2,并展开到-1'如果版本-1更小,'0“如果他们是一样的,或'1版本-2较小。版本字符串必须是列表由'分隔的元素的.’, ‘,'或'-',其中每个元素是一个数字以及可选的区分大小写的字母指定测试版。比较停止在最左边的元素包含差异的,尽管0元素与缺少元素。

允许在中包含提交标识符版本,例如作为提交的缩写SHA1,前提是仍然存在单调增加前缀以实现准确的基于版本的比较。例如,这一段是在autoconf的开发快照声称为版本2.61a-248-dc51型',或在2.61a发布后248次提交'的缩写提交标识dc51型’.

m4_version_compare([1.1],[2.0])⇒-1m4版本比较([2.0b],[2.0a])1m4版本比较([1.1.1],[1.1.1a])⇒-1m4_version_compare([1.2],[1.1.1a])1m4版本比较([1.0],[1])0m4_版本比较([1.1pre],[1.1pre])0m4版本比较([1.1a],[1,10])⇒-1m4版本比较([2.61a],[2.61a-248-dc51])⇒-1m4_version_compare([2.61b],[2.61a-248-dc51])1
宏:m4版本资源 (版本,[如果-新-彻底],[if-old公司= ‘m4_致命])

比较版本针对当前Autoconf版本正在运行。如果运行版本为版本或更新版本,请展开如果-新-彻底,但如果版本大于版本当前正在执行,展开if-old公司,默认为打印错误消息并退出状态为63的m4sugar。当只给出一个时参数,其行为如下AC_PREREQ系统(请参见处理Autoconf版本).请记住,autoconf理念倾向于功能检查而非版本检查检查。