The C Preprocessor - Redefining

Node: Redefining Next: Macro Pitfalls Prev: Undefining Up: Macros

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 (see 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:

Recall that a comment counts as whitespace.


Next: Macro Pitfalls Up: Macros