2017-02-11 6 views
8

को देखते हुए इन संरचनाओं:क्या सी में वैध/अनुपालन में यूनियनों का यह उपयोग है?

typedef struct { 
    //[...] 
} StructA; 

typedef struct { 
    StructA a; 
    //[...] 
} StructB; 

typedef union { 
    StructA a; 
    StructB b; 
} Union; 

बराबर है और न अपरिभाषित नीचे दो एक्सेस विधियों हैं?

Union u; 
memcpy(&u.b, /*...*/); //Pretend I populated StructB here 
u.a; // Method 1 
u.b.a; // Method 2 

ध्यान दें कि स्ट्रक्चर स्ट्रक्चरब का पहला सदस्य होता है।

मैंने इसे एक कोडबेस में देखा जो काम करता है, मैं बस सोच रहा हूं कि यह मानक है या यदि कोई संरेखण हो गया है।

उत्तर

5
typedef union { 
    StructA a; 
    StructB b; 
} Union; 

a एक ही संघ में b के रूप में ऑफसेट है: 0

aStructB में 0 ऑफसेट गया है।

कॉल समकक्ष हैं।

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