bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: m4_quote(m4_defn())


From: Eric Blake
Subject: Re: m4_quote(m4_defn())
Date: Thu, 21 May 2009 17:53:11 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Bruno Haible <bruno <at> clisp.org> writes:

> I'm convinced now. Thanks for showing these effects. Probably I got
> confused by the name and it should better be called m4_concat_args.
> For a single argument, even unquoted, m4_quote appears to be a nop:

It depends on whether that single argument is an unquoted macro call (or a 
parameter expansion like $1) which might expand to multiple arguments.  In 
other words, use m4_quote when you are not sure whether what you are enclosing 
might expand to a raw comma, but when you also don't care about whitespace 
after raw commas.  Use the (more expensive, and only available in newer 
autoconf) better m4_expand if you do care about whitespace.  And use m4_defn
([var]), not m4_quote(var), to grab the contents of a macro used to store an 
arbitrary string.  You're right that m4_quote has very little use when writing 
m4sugar to be as robust as possible (m4_dquote, on the other hand, is very 
important).

$ m4 -Ilib m4sugar/m4sugar.m4 -
m4_divert

m4_define([a], [A, B])

a
A, B
m4_quote(a)
A,B
m4_expand([a])
A, B
m4_len(a)
m4:stdin:6: warning: m4_len: extra arguments ignored: 2 > 1
1
m4_len(m4_quote(a))
3
m4_len(m4_expand([a]))
4

-- 
Eric Blake






reply via email to

[Prev in Thread] Current Thread [Next in Thread]