cpp.info: Redefining
Go forward to Macro Pitfalls
Go backward to Undefining
Go up to Macros
Go to the top op cpp
Redefining Macros
"Redefining" a macro means defining (with `#define') a name that is
already defined as a macro.
A redefinition is trivial if the new definition is transparently
identical to the old one. You probably wouldn't deliberately write a
trivial redefinition, but they can happen automatically when a header
file is included more than once (*note Header Files::.), so they are
accepted silently and without effect.
Nontrivial redefinition is considered likely to be an error, so it
provokes a warning message from the preprocessor. However, sometimes it
is useful to change the definition of a macro in mid-compilation. You
can inhibit the warning by undefining the macro with `#undef' before the
second definition.
In order for a redefinition to be trivial, the new definition must
exactly match the one already in effect, with two possible exceptions:
* Whitespace may be added or deleted at the beginning or the end.
* Whitespace may be changed in the middle (but not inside strings).
However, it may not be eliminated entirely, and it may not be added
where there was no whitespace at all.
Recall that a comment counts as whitespace.
Created Wed Sep 1 16:42:06 2004 on bee with info_to_html version 0.9.6.