2012-08-10 16 views
31

यदि मैं एक कॉन्स यूनियन ऑब्जेक्ट (उदाहरण के नीचे कोड में) बनाता हूं, तो उसमें कोई सदस्य असाइनमेंट नहीं किया जा सकता है। तो क्या किसी भी मामले में एक कॉन्स यूनियन ऑब्जेक्ट बनाने का कोई उपयोग है?निरंतर संघ वस्तु का उपयोग क्या है?

union un 
{ 
    int i; 
    float f; 
    char c; 
}; 
const union un a; 
/// ! a.i = 10; error. 
+1

'सी' में एक अलग सदस्य के माध्यम से एक संघ की व्याख्या करना असामान्य नहीं है जिसे हाल ही में सेट किया गया था। और निश्चित रूप से, यह 'स्थिर अस्थिर' हो सकता है - यानी हम इसे नहीं बदलेंगे, लेकिन कोई और हो सकता है, और हमें इसे देखने में सक्षम होना चाहिए। – BoBTFish

+4

नहीं यदि पूरा हानि संघ 'const' है। – Puppy

+0

@Xeo, जब मैं gcc के साथ परीक्षण करता हूं तो यह "संघ" भाग के बिना संकलित नहीं होगा। –

उत्तर

33

तुम अब भी संघ इस प्रकार प्रारंभ कर सकते हैं:

const union un a = { .i = 100 }; 

तो इसे अपने कोड में उपयोग करें।

+3

सी में, वह है। सी ++ में, मुझे लगता है कि आप एक कन्स्ट्रक्टर और ऐसी चीजें लिख सकते हैं। – Xeo

+0

हाहा, आपने मुझे 35 सेकंड तक मार दिया। :-) –

+0

यही वह है जो मुझे नहीं पता था। इस तरह किसी भी संघ के सदस्य को शुरू किया जा सकता है! – cirronimbo

15

तुम अब भी यह घोषणा पर, इस तरह प्रदान कर सकते हैं, उदाहरण के लिए:

const union un a = {0}; 

अद्यतन: कि अंकन पहले यूनियन के सदस्यों की सेट।

+2

यह सदस्य कौन सा सदस्य करता है? –

+0

@ आर। मार्टिन्हो फर्नांडीस, सभी सदस्यों, शून्य से। –

+0

हाँ, लेकिन यह केवल पहले सदस्य को असाइन करने के लिए किया जा सकता है (या जैसा कि आपने उल्लेख किया है, सभी शून्य पर सेट करने के लिए)! – cirronimbo