एक लंबे समय पहले मान लीजिए, मैं बनाया था निम्नलिखित गणन:कैसे ObjectiveC में पदावनत किया जा रहा के रूप में एक enum मूल्य घोषित करने के लिए (2.0)
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricSquare,
GeometricRectangle,
GeometricCircle
}GeometricFigures;
मैं उन कुछ समय पहले शुरू की मेरी भयानक इंजन के भीतर और अब मैंने अंततः निर्णय लिया है कि लोगों को GeometricSquare
का उपयोग नहीं करना चाहिए क्योंकि यह पहले से ही GeometricRectangle
द्वारा कवर किया गया है।
एक शुरुआत के लिए, मैं संभवतः मेरी गणन कुछ की दिशा में इस तरह बदल जाएगा:
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
कि निश्चित रूप से मेरी भयानक इंजन पीछे की ओर संगत रखेंगे लेकिन दूसरी ओर विरासत कबाड़ वृद्धि हुई है। इसलिए मैं एक निकट भविष्य में GeometricSquare
को पूरी तरह से हटाना चाहता हूं। मेरे इंजन के उपयोगकर्ताओं के लिए यह स्पष्ट करने के लिए, मैं GeometricSquare
को बहिष्कृत के रूप में चिह्नित करना चाहता हूं।
मेरा लक्ष्य यह है कि प्रलेखन (डॉक्सिजन) के साथ-साथ कोड पूर्णता (एक्सकोड) और अंतिम लेकिन कम से कम संकलक (जीसीसी) उपयोगकर्ता को यह स्पष्ट नहीं करेगा कि GeometricSquare
का उपयोग अब और नहीं किया जाना चाहिए GeometricRectangle
द्वारा।
प्रलेखन के लिए, मैं बस @deprecated
कीवर्ड का उपयोग करूंगा;
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
///@deprecated Has been replaced by GeometricRectangle
GeometricSquare = GeometricRectangle,
GeometricCircle
}GeometricFigures;
लेकिन एक्सकोड और जीसीसी के बारे में कैसे?
दुर्भाग्यवश, सामान्य जीसीसी (विधि) विशेषता नौकरी नहीं लगती है। नीचे दिए गए ड्राफ्ट के रूप में __attribute__((deprecated))
जोड़ना एक वाक्यविन्यास त्रुटि का कारण बनता है।
typedef enum
{
GeometricPoint,
GeometricLine,
GeometricRectangle,
GeometricSquare = GeometricRectangle __attribute__((deprecated)),
पार्स मुद्दा उम्मीद}
GeometricCircle
}GeometricFigures;
तो जाहिर है कि या तो पूरी तरह काम नहीं करता है या मैं बस गलत उपयोग कर रहा हूँ।
संभव डुप्लिकेट ++ अंकुरित मूल्य के रूप में चिह्नित करें?] (http://stackoverflow.com/questions/5488057/c-mark-enum-value-as-deprecated) – lpapp