Del mismo modo que es posible
definir identificadores de preprocesado, también es posible eliminar
definiciones de este tipo de identificadores previamente realizadas. Para ello
la directiva que se usa tiene la siguiente sintaxis:
#undef
<nombreIdentificador>
En caso de que se intente
eliminar con esta directiva un identificador que no haya sido definido o cuya
definición ya haya sido eliminada no se producirá error alguna, sino que
simplemente la directiva de eliminación será ignorada. El siguiente ejemplo
muestra un ejemplo de esto en el que el segundo #undef es
ignorado:
#define VERSION1
#undef VERSION1
#undef VERSION1
Al igual que ocurría con las directivas
#define,
no se puede incluir código fuente antes de las directivas #undef, sino que, todo
lo más, lo único que podrían incluirse antes que ellas serían directivas de
preprocesado.