Enumeration schrieb:
> Was mache ich hier falsch
Das ist leicht zu beantworten.
Du trennst nicht zwischen Präprozessor und Compiler.
Jede Zeile, deren erstes Zeichen ein # ist, ist eine Anweisung an den
Präprozessor. Der Präprozessor weiß aber nichts von C (ok, das ist jetzt
ein wenig plakativ, aber in deinem Fall ist genau das das Problem).
Der Präprozessor macht im Grunde ledglich Textarbeiten (zb Texte durch
andere Texte ersetzen) am Programmtext, ehe dann der eigentliche
Compiler das so aufgearbeitete Programm zu Gesicht bekommt.
D.h. der Präprozessor kann dem Compiler zuarbeiten, aber nicht
umgekehrt.
Für den Präprozessor ist dein enum im Grunde einfach nur Text ohne
Bedeutung. Mehr nicht.
> bzw. was für Alternativen gibt es?
Das kannst du nur zur Laufzeit lösen. Dein Programm checkt am Anfang in
main() die bewusste Konstante und macht irgendwie auf sich aufmerksam.