If you happen to define an object or a function or a constant whose name collides with a macro located elsewhere in a third-party header file, as in:
// file defs.h //...many declaration #define PI 3.14 // your program: #include "defs.h" const double PI = 3.14159265358; // error, 'PI' redefined
you can use the #undef preprocessor directive to cancel a previously-defined macro:
#include "defs.h" #undef PI // from now on, ignore the PI macro const double PI = 3.14159265358979 // OK