#undef makro_nameMit der Direktive #undef kann ein Makro außer Kraft gesetzt werden. Die Makrodefinition wird praktisch "vergessen" und der Makroname ist dann undefiniert.
Der Status "definiert" bzw. "undefiniert" stellt eine wichtige Eigenschaft
eines Bezeichners dar, unabhängig von seiner tatsächlichen
Definition.
Die Direktiven #ifdef und #ifndef werden benutzt, um zu
prüfen, ob ein Bezeichner momentan definiert ist oder nicht.
Nachdem die Definition eines Makronamens aufgehoben worden ist, kann er mit #define neu definiert werden.
Beispiel:
#include <stdio.h>
int main(void)
{
#define N 1
printf("%d\n", N);
#undef N
#define N 2
printf("%d\n", N);
return 0;
}
Der Versuch, einen bereits definierten Makronamen erneut zu definieren,
führt zu einer Warnung, falls die neue Definition nicht exakt der
existierenden entspricht.