2010-09-29 9 views
5

मैं कोड है कि इस तरह देखा था:मुझे सी ++ में टाइपपीफ के साथ घोषित एक गणना क्यों करनी चाहिए?

enum EEventID { 
    eEvent1, 
    eEvent2, 
    ... 
    eEventN }; 

और उस की समीक्षा की हो गया और

typedef enum { 
    eEvent1, 
    eEvent2, 
    ... 
    eEventN } EEventID; 

दोनों के बीच क्या अंतर है करने के लिए बदल? परिवर्तन क्यों करें? जब मैंने this question पर देखा, तो टाइपिफ का एकमात्र उल्लेख डाउनवॉटेड हो गया।

उत्तर

11

दोनों सी ++ में समान हैं, लेकिन सी में सी में समान नहीं हैं यदि आप टाइप किए गए टाइप का उपयोग करते हैं तो आपको सी और सी ++ के बीच संगत कोड मिलता है (इसलिए हेडर फ़ाइल में स्वतंत्र रूप से उपयोग किया जा सकता है सी या सी ++ के लिए इस्तेमाल किया जा सकता है)। यही कारण है कि मैं इसे पसंद करने के लिए देख सकता हूं।

+0

elucicdation के लिए धन्यवाद। मुझे चिंता करना शुरू हो गया था कि सी ++ के बारे में एक और कोने था, जिसे मैंने सोचा था कि मुझे पता था लेकिन पूरी तरह से अनजान था (देखें: बूस्ट में लोग टेम्पलेट जिमनास्टिक जो आसानी से करते हैं) – mmr

+4

"दोनों सी ++ में समान हैं" - पॉइंटिंग के लायक बाहर कुछ कार्यान्वयन डीबग जानकारी भिन्न हो सकती है क्योंकि टाइपिफ़ प्रभावी रूप से अज्ञात या यादृच्छिक नामित enum के लिए प्रभावी है, इसलिए डीबग जानकारी इसे "EEventID" के बजाय दस्तावेज़ के रूप में दस्तावेज कर सकती है। इससे कुछ लोगों को यहां तक ​​कि यूग्लियर 'टाइपिफ एनम आईडीएन 1 {...} आईडीएन 2;', आमतौर पर एक उपसर्ग या प्रत्यय जोड़कर गठित किया जाता है :-(- यह समस्या को ठीक से हल नहीं करता है, लेकिन कुछ प्रदान करता है अधिक पता लगाने योग्य आईडीएन। –

2

मैं एक संभावित जवाब here पाया: "ठीक है यह सी भाषा है, जिसमें यदि आप एक enum या संरचना है जो उपयोगकर्ता परिभाषित डेटा प्रकार के होते हैं का उपयोग करने के प्रासंगिक है, तो आप इसे का उपयोग करते समय enum या struct कीवर्ड का उल्लेख करने की जरूरत है।"

शायद आपका समीक्षक एक कट्टर सी कोडर है, और वह आदत से बाहर स्वचालित रूप से करता है।

0

आपका समीक्षक अपने सी ++ से सी को नहीं जानता है।

2

यदि कंपनी में कोई मानक है, तो यह केवल स्थिरता के लिए हो सकता है। भले ही आप सी में कभी भी उपयोग न करें, फिर भी यह हर जगह ऐसा करने के लिए अभी भी बेहतर है।

2

टाइपपीफ सी ++ में है।
सी यदि आप अपने एनम प्रकार के चर को परिभाषित करना चाहते हैं तो यह आवश्यक है: EEventID event;, अन्यथा आपको इसे एक enum: enum EEventID event; निर्दिष्ट करना होगा।

संबंधित मुद्दे