The “#undef directive” is related to #define. As the name suggests, #undef removes (“undefines”) a name that was created with #define. For instance, if you create the symbolic constant PI with the #define directive,
#define PI 3.14
you can then remove the name PI with the following #undef directive:
#undef PI
You can use #define and #undef to create a name that has meaning in only
part of a source program. The next two sections explain why you might want to
do this.