#undef ABC
#undef FUNC
#undef
"cancels" out a previous #define
. Der Effekt ist, als ob Sie nie zuvor eine #define
für eine bestimmte Kennung hatten. Beachten Sie, dass #define
s den Gültigkeitsbereich nicht respektieren. Daher ist es am besten, sie nur zu verwenden, wenn dies erforderlich ist.
Beachten Sie auch, dass es keine Rolle spielt, ob eine Makrokennung die "normale" Syntax verwendet, während eine andere eine "funktionsähnliche" Syntax verwendet. #define ABC
und #define ABC(A)
definieren beide ein Makro mit dem Namen ABC
. Wenn Sie beide haben, ohne #undef
einer von ihnen, der letzte "überschreibt" den anderen. (Einige Compiler eine Warnung aussenden, wenn dies geschieht.)
Wenn ich '#Define abc' und '#Define abc (A)' haben, beide werden undefed mit einem '#undef abc'? – osgx
Es gibt so etwas wie eine Makroüberladung. Nach dem zweiten '# define' von' abc' ist der erste weg. – Job
Job, ich denke du bist wrng. Sowohl Konstanten-ähnliche als auch Makro-ähnliche Funktionen können koexistieren. Auch funktionsähnliche Makros mit unterschiedlicher Anzahl von Parametern können nebeneinander existieren. – osgx