|
23.3.4 Naming macros
Just like functions in a C program, it's important to choose a good name
for your Autoconf macros. A well-chosen name helps to unambiguously
describe the purpose of the macro. Macros in M4 are all named
within a single namespace and, thus, it is necessary to follow a
convention to ensure that names retain uniqueness. This reasoning goes
beyond just avoiding collisions with other macros--if you happen to
choose a name that is already known to M4 as a definition of any
kind, your macro's name could be rewritten by the prior definition
during macro processing.
One naming convention has emerged--prefixing each macro name with the
name of the package that the macro originated in or the initials of the
macro's author. Macros are usually named in a hierarchical fashion,
with each part of the name separated by underscores. As you move
left-to-right through each component of the name, the description
becomes more detailed. There are some high-level categories of macros
suggested by the Autoconf manual that you may wish to use when forming a
descriptive name for your own macro. For example, if your macro tries
to discover the existence of a particular C structure, you might wish to
use C and STRUCT as components of its name.
- `C'
- Tests related to constructs of the C programming language.
- `DECL'
- Tests for variable declarations in header files.
- `FUNC'
- Tests for functions present in (or absent from) libraries.
- `HEADER'
- Tests for header files.
- `LIB'
- Tests for libraries.
- `PATH'
- Tests to discover absolute filenames (especially programs).
- `PROG'
- Tests to determine the base names of programs.
- `STRUCT'
- Tests for definitions of C structures in header files.
- `SYS'
- Tests for operating system features, such as restartable system calls.
- `TYPE'
- Tests for built-in or declared C data types.
- `VAR'
- Tests for C variables in libraries.
Some examples of macro names formed in this way include:
- `AC_PROG_CC'
- A test that looks for a program called
cc .
- `AC_C_INLINE'
- A test that discovers if the C keyword
inline is recognized.
- `bje_CXX_MUTABLE'
- A test, written by "bje", that discovers if the C++ keyword
mutable is recognized.
|