uzun zaman önce varsayalım, ben yaratmıştı aşağıdaki numaralandırma:(2.0)
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
benim müthiş motoru içinde bir süre önce bu tanıttı ve Şimdi nihayet, insanların zaten GeometricRectangle
kapsamında olduğu için GeometricSquare
kullanmamasına karar verdim.
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
. Bu nedenle, öngörülebilir bir gelecekte GeometricSquare
'u kaldırmak istiyorum. Bunu motorumun kullanıcılarına açık yapmak için, GeometricSquare
'u kullanımdan kaldırılmış olarak işaretlemek istiyorum.
Amacım, belgelerin (doxygen) yanı sıra kod tamamlama (Xcode) ve son fakat en az değil, derleyici (GCC) kullanıcı için GeometricSquare
artık kullanılmamasını ve değiştirilmemesi gerektiğini açıkça ortaya koymasıdır. GeometricRectangle
.
Belgeler için @deprecated
anahtar sözcüğünü kullanıyorum;
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
Xcode ve GCC'ye ne dersiniz?
Ne yazık ki, her zamanki GCC (yöntem) özniteliği işi yapmıyor gibi görünüyor. Aşağıda gösterildiği gibi __attribute__((deprecated))
eklemek, bir sözdizimi hatasına neden olur. Beklenen
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
Ayrıştırma Sayı }
GeometricCircle
}GeometricFigures;
Yani belli bu da tamamen çalışmaz ya da ben sadece yanlış kullanıyorum.
olası yinelenen [C++ enum değerini onaylanmadı olarak işaretleyin?] (http://stackoverflow.com/questions/5488057/c-mark-enum-value-as-deprecated) – lpapp