alt C/C++ Code Aufräumen, die anstelle von Aufzählungen fest codierten Ganzzahlliterale verwendet wird, ist es mühsam zu finden, wo die Funktion Deklaration aber nicht den Körper richtig Refactoring ist. z.B.Gibt es einen c/C++ - Compiler, der eine Warnung (oder einen Fehler) oder eine enum-Konvertierung in int ausgeben kann?
enum important {
little = 1,
abit = 2,
much = 3
};
void blah(int e)
{
// magic stuff here
}
void boing(int e) { ... }
void guck(important e)
{
switch (e) {
case 3: // this would be a good place for a warning
blah(e); // and this
break;
default:
boing((int)e); // but this is OK (although imperfect and a warning would be acceptable)
break;
}
}
Beschriften/jeder Aufzählungstyp zu ändern oder durch den Code der Suche nach ihnen auch eine Menge Arbeit sein würde, da es sehr sehr viele verschiedene Aufzählungen sind, so ist dies nicht bevorzugt, könnte aber eine akzeptable Lösung sein.
Ich brauche es nicht in einem unserer Haupt-Compiler oder anderen Tools (gcc meist) oder Plattform (die meisten), es manuell ein paar Mal laufen würde ausreichen, aber ich würde etwas bevorzugen, das ist nicht zu esoterisch oder teuer.
Hat Griffe diese nicht perfekt gcc? Ich benutze g ++ und sehe immer die beschriebenen Warnungen. Verhält sich reiner C-Compiler anders? – Basilevs
Nein, kompiliere diesen Code (minus ... und plus eine leere main()) mit: g ++ -Wall test.cpp gibt 0 Warnungen. Die Promotion von int zu enum wird für gewarnt, aber nicht umgekehrt. Wenn Sie andersherum arbeiten, geben Sie mir bitte Ihre Befehlszeile. bitte ... –