ずっと前に、次の列挙型を作成したとします。
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
しばらく前に私の素晴らしいエンジンにそれらを導入しましたが、すでにGeometricSquare
カバーされているため、人々はもう使用すべきではないと最終的に判断しました.GeometricRectangle
まず、列挙を次のように変更する可能性があります。
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
それは確かに私の素晴らしいエンジンの下位互換性を維持しますが、一方でレガシージャンクを増やします. GeometricSquare
そのため、近いうちに完全に削除したいと考えています。GeometricSquare
私のエンジンのユーザーにそれを明らかにするために、非推奨としてマークしたいと思います。
私の目標は、ドキュメンテーション (doxygen) とコード補完 (Xcode)、そして最後にコンパイラ (GCC) によって、GeometricSquare
もはや使用されるべきではなく、GeometricRectangle
.
ドキュメントについては、単純に@deprecated
キーワードを使用します。
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
しかし、Xcode と GCC はどうでしょうか?
残念ながら、通常の GCC (メソッド) 属性ではうまくいかないようです。下書きのように追加 __attribute__((deprecated))
すると、構文エラーが発生します。
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
パースの問題 が予想されます }
GeometricCircle
}GeometricFigures;
明らかに、それは完全には機能しないか、単に間違って使用しています。