2012-10-05 11 views
5
union u{ 
char ch[41]; 
int b[10]; 
}un; 

LLVM इसकैसे LLVM में ली गई यूनियन प्रकार है

%union.u = type { [10 x i32], [4 x i8] } 

को संकलित करता है तथा इस

union un{ 
    struct s{ 
    int a; 
    float f; 
    double d; 
    }st; 

    int intArr[10]; 
}uno; 

इस

%union.un = type { %struct.s, [24 x i8] } 
%struct.s = type { i32, float, double } 

को संकलित करता है किसी भी एक व्याख्या कर सकते हैं कि कैसे संघ का प्रकार व्युत्पन्न किया गया है?

उत्तर

4

पहला सदस्य संघ का सबसे गठबंधन सदस्य है (यह कई ऐसे सदस्यों को मनमाने ढंग से चुनता है), और i8 की एक सरणी को सही आकार बनाने के लिए जोड़ा गया है।

+0

सबसे गठबंधन सदस्य द्वारा आपका क्या मतलब है? क्या इसका मतलब यह है कि जिस सदस्य का संरेखण संख्यात्मक मूल्य अधिक है या क्या? निम्नलिखित मामले में यूनियन डबल या इंट सरणी यूनियन डीफ़ { \t int x [2] [2] का सबसे गठबंधन सदस्य होना चाहिए; \t डबल डी; }; –

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