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 section 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.