undef

¿Cuándo necesitamos #ifdef antes de #undef?

En muchos de los archivos C y C++ he visto macros como esta: #ifdef X #undef X // no statements in between #endif Siento ... r standalone #undef, si solo quiero undefine una macro ? ¿Eso hace que la práctica de codificación sea mala de todos modos ?