2010-01-27 18 views
25

उदाहरण के लिए, कहते हैं कि हम एक संघक्या घोषणा में एक संघ शुरू किया जा सकता है?

typedef union { 
unsigned long U32; 
float f; 
}U_U32_F; 

जब यह संघ प्रकार का एक चर घोषित किया जाता है है, वहाँ एक प्रारंभिक मूल्य निर्धारित करने के लिए एक तरीका है?

U_U32_F u = 0xffffffff; // Does not work...is there a correct syntax for this? 
+0

u32 क्या है? ..... –

+0

@P्रासून माफ़ी माफी । मैंने u32 टाइप किया था लेकिन उदाहरण में नहीं दिखाया गया था। – semaj

उत्तर

29

एक प्रारंभकर्ता सूची का उपयोग करें:

U_U32_F u = { 0xffffffff }; 

आप

U_U32_F u = { .f = 42.0 }; 
+14

बस एक नोट है कि दूसरा उदाहरण एक सी 99 सुविधा है जो सभी कंपाइलरों द्वारा समर्थित नहीं है। –

3

के माध्यम से पहले एक के अलावा अन्य सदस्यों सेट कर सकते हैं की कोशिश करो U_U32_F u = {0xffffffff};

3

ध्यान दें कि प्रति सदस्यीय संघ प्रारंभ नहीं करता है प्री-सी 99 कंपाइलर्स पर काम नहीं करते हैं, जिनमें से एक निराशाजनक संख्या है। वर्तमान माइक्रोसॉफ्ट सी कंपाइलर इसका समर्थन नहीं करता है, उदाहरण के लिए। (मुझे अस्पष्टता से याद है कि यह पहले सदस्य प्रारंभिकरण का भी समर्थन नहीं करता है, जो कि K& आर II पर वापस जाता है, लेकिन मैं इसके बारे में गलत हो सकता हूं।)

+4

माइक्रोसॉफ्ट कम या ज्यादा त्याग दिया सी और चाहता है कि आप सी ++ (या यहां तक ​​कि बेहतर अभी तक: सी #) का उपयोग करें; मैं मिनजीडब्ल्यू के साथ काफी संतुष्ट हूं, अब जीसीसी-4.4 बाहर है; भविष्य में, क्लैंग/एलएलवीएम एक व्यवहार्य विकल्प भी हो सकता है यदि आप एक मुफ्त कंपाइलर – Christoph

+0

की तलाश में हैं तो माइक्रोसॉफ्ट सी कंपाइलर (और मेरे ज्ञान के लिए नहीं है, न ही होगा) किसी विशेष मानक के अनुरूप नहीं है। –

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