m4-discuss
[Top][All Lists]
Advanced

[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:
> 
> #define ANALYZES_AGES_UNDER_ONE__________TF FALSE
> 
> 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]