2012-09-26 18 views
8

इस प्रकार मैं तत्वों typedef एक कस्टम को परिभाषित कर रहा हूँ में "अज्ञात" या "शून्य" मूल्य को परिभाषित करें ....एक enum

typedef enum { 
    Ar, 
    Cl, 
    F, 
    He, 
    H, 
    Kr, 
    Ne, 
    N, 
    O, 
    Rn, 
    Xe 
} Element; 

मैं तत्व सेट नहीं किया गया प्रकार का एक चर (जाँच करना चाहते हैं अनिवार्य रूप से सिर्फ एक पूर्ण मूल्य की जांच करें)। जहाँ तक मेरा बता सकते हैं यह करने के लिए एक ही रास्ता एक अतिरिक्त पंक्ति

.... { 
     unknown = 0, 
     Ar, 
     F, 
...etc 

जोड़ने के लिए मैं सही हूँ या वहाँ यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका है?

+0

मेरा मानना ​​है कि सम्मेलन में "अज्ञात" मान – nielsbot

+0

है ... या, इसके लिए enums का उपयोग न करें। शायद इसके बजाय एनएसएसटींग ऑब्जेक्ट्स का उपयोग करें? – nielsbot

+0

यह सादा सी बीटीडब्ल्यू है। – DrummerB

उत्तर

20

हां, आपको एक "अज्ञात" मान शामिल करना चाहिए। असल में enum सिर्फ int है। यदि आप घोषणाओं में किसी भी स्थिरांक को परिभाषित नहीं करते हैं (जैसा कि आपके पहले कोड नमूने में है) पहला विकल्प 0 और डिफ़ॉल्ट मान पर सेट किया जाएगा।

पहला विकल्प 1 पर पहला विकल्प सेट करना हो सकता है। इस प्रकार मान 0 परिभाषित नहीं किया जाएगा और आप इसे मैन्युअल रूप से जांच सकते हैं।

typedef enum { 
    Ar = 1, 
    Cl, 
    F, 
    He, 
    H, 
    Kr, 
    Ne, 
    N, 
    O, 
    Rn, 
    Xe 
} Element; 


if (myElement) { // same as if (myElement != 0) 
    // Defined 
} else { 
    // Undefined 
} 

लेकिन मैं इसके बजाय स्पष्ट रूप से परिभाषित "अज्ञात" मान का चयन करूंगा।