[Top][All Lists]

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

Re: Recommended m4 macro naming convention?

From: Eric Blake
Subject: Re: Recommended m4 macro naming convention?
Date: Fri, 02 May 2014 06:13:36 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0

On 05/02/2014 12:33 AM, Daniel Goldman wrote:
> This may seem a silly question to some, but I think naming conventions
> are important. So, any advice concerning naming conventions for m4 macro
> names, eg foo_bar, fooBar, Foo_Bar, FOO_BAR, etc?
> [A-Z_a-z][A-Z_a-z0-9]* is the requirement for m4 macro names, I hope I
> got that right, :) so that is not my question.

Yes, you got that right.

> In cpp, the strong standard is UPPER_CASE, such as:
> Of course cpp doesn't care, allows same names as m4. But it is
> reassuring to always see UPPER_CASE, a dead giveaway for cpp macros.
> In the GNU m4 manual, all the builtin macros are lowercase, and the
> examples almost all use lowercase macro names. But an example from the
> Gnulib project uses uppercase. sendmail seems to use at least a few
> uppercase macros, maybe a lot. Some postings on this group use uppercase
> names. My cpp experience makes me want to use UPPER_CASE. Is there any
> general guideline, or is it just "whatever you like"? If no general
> guideline, should there be?

m4 is used in so many different contexts, and the language itself
doesn't care, so it is really up to your application to choose a
convention.  But yes, autoconf recommends ALL_CAPS, or possibly
sig_ALL_CAPS (where sig_ represents a lowercase namespace for a set of
macros provided from a single source), as the easiest to recognize.
Although the builtins default to lower case, m4 lets you rename the
builtins to whatever naming convention you'd like.

> Could one argue builtins behave like "functions" (I know they are
> macros), so maybe use lower_case for user-defined macros with "function"
> behavior (just like some C lowercase macros, eg, isascii), and use
> UPPER_CASE for "pure" macros (simple substitution)?

Again, that's more up to your project, and what you want to document and
maintain for your local use of m4.

Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

reply via email to

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