a83 Redefining Macros Contents|Index|Previous|Next
 

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, as in the following instances.

0