M4 预处理器中的字符串长度
String-length in the M4 preprocessor
所以,通过这个简单的输入,
define(foo, len()) foo(abcdef)
我得到,作为输出:
2
我怎样才能打印 5
?我无法弄清楚使 len()
实际上收到 </code>、<code>abcdef
的值而不是文字字符串 `'
.
编辑 1: 有问题的实际代码如下所示:
define(`FILE', `#' /!\ /!\
`#' ====substr(==============================,0,len())====)dnl
FILE(`UTILITY.ASM')
len()
的低引号导致它在定义步骤中立即求值,因此 foo 被定义为 2。
即这相当于:
define(foo, 2) foo(abcdef)
完全引用时,结果如你所料:
define(`foo', `len()') foo(`abcdef')
> 6
所以,通过这个简单的输入,
define(foo, len()) foo(abcdef)
我得到,作为输出:
2
我怎样才能打印 5
?我无法弄清楚使 len()
实际上收到 </code>、<code>abcdef
的值而不是文字字符串 `'
.
编辑 1: 有问题的实际代码如下所示:
define(`FILE', `#' /!\ /!\
`#' ====substr(==============================,0,len())====)dnl
FILE(`UTILITY.ASM')
len()
的低引号导致它在定义步骤中立即求值,因此 foo 被定义为 2。
即这相当于:
define(foo, 2) foo(abcdef)
完全引用时,结果如你所料:
define(`foo', `len()') foo(`abcdef')
> 6