vor langer Zeit Angenommen, ich die folgende Aufzählung erstellt hatte:Wie ein ENUM-Wert als in Objective veraltet erklären (2.0)
eingeführttypedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
ich während derjenigediejenigedasjenige vor in meinem ehrfürchtigen Motor und Jetzt habe ich endlich entschieden, dass Leute GeometricSquare
nicht mehr verwenden sollten, da dies bereits von GeometricRectangle
abgedeckt wird.
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
die sicherlich meinen genial Motor rückwärtskompatibel, aber auf der anderen Seite erhöht das Erbe Junk halten würde:
Für den Anfang würde ich vielleicht meine Aufzählung zu so etwas wie dies ändern. Daher möchte ich in absehbarer Zeit GeometricSquare
insgesamt entfernen. Um dies den Benutzern meiner Engine zu verdeutlichen, möchte ich GeometricSquare
als veraltet markieren.
Mein Ziel ist es, dass die Dokumentation (doxygen) sowie die Code-Vervollständigung (Xcode) und nicht zuletzt der Compiler (GCC) dem Benutzer verdeutlichen, dass GeometricSquare
nicht mehr verwendet werden sollte und ersetzt wurde von GeometricRectangle
.
Für die Dokumentation würde ich einfach @deprecated
Schlüsselwort verwenden;
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
Aber wie wäre es mit Xcode und GCC?
Leider scheint das übliche GCC (Methode) Attribut nicht die Aufgabe zu erfüllen. Das Hinzufügen von __attribute__((deprecated))
wie unten entworfen verursacht einen Syntaxfehler.
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
Parse Ausgabe Erwartet}
GeometricCircle
}GeometricFigures;
So offensichtlich, dass entweder nicht ganz funktioniert oder ich bin einfach falsch verwenden.
möglich Duplikat [C++ Mark enum Wert als veraltet?] (http://stackoverflow.com/questions/5488057/c-mark-enum-value-as-deprecated) – lpapp