Lassen Sie uns eine Liste von Werten (foo.lst) haben:
%Vor%Lassen Sie uns daraus ein enum machen
%Vor% Verwenden wir diese Enumeration in switch
:
(Dieser Code ist dumm, aber ignoriere das einfach)
Das Problem:
Mit -Wswitch
(in -Wall
enthalten) warnen GCC und Clang (und wahrscheinlich andere):
Warnung: Aufzählungswert '_foo_length' wird nicht in switch [-Wswitch]
behandelt
Lösungen:
-Wno-switch
wird diese Warnung ausgeblendet. case
vom Switch. default: unreachable();
-Falls. #define _foo_length (baz + 1)
und machen Sie ihn nicht mehr zur Enumeration. Idealerweise sollte es einen Weg geben, den Wert eines enum als nicht zuweisbar zu markieren , damit es beim Lesen der möglichen Werte keine Warnung im Compiler erzeugt und dieser nicht da ist. ohne dass ein Präprozessor-Makro benötigt wird, das doppelte Änderungen benötigt.
Gibt es so etwas? Irgendeine andere Option, an die ich nicht gedacht habe?