2012-06-03 10 views
7

तो, offsetof(struct, field) एक सादे संरचना के अंदर क्षेत्र के सापेक्ष ऑफ़सेट देता है। लेकिन क्या घोंसला वाली संरचना के अंदर एक क्षेत्र के रिश्तेदार ऑफसेट को पाने का कोई तरीका है।नेस्टेड संरचना में रिश्तेदार ऑफसेट ढूंढना

उदा।

struct my_struct { 
    int a; 
    struct { 
     int b; 
     int c; 
    } anonymous_struct; 
} 

वहाँ किसी भी तरह से b की भरपाई और cmy_struct (रनटाइम पर) के सापेक्ष प्राप्त करने के लिए है।

उत्तर

12

हां, आप अभी भी offsetof का उपयोग कर सकते हैं।

उदा।

size_t boff = offsetof(struct my_struct, anonymous_struct.b); 

offsetof की आवश्यकताओं हैं कि प्रकार और सदस्य-डेसिग्नेटर कि staticप्रकारt;, &(t.सदस्य-डेसिग्नेटर) एक पते निरंतर का मूल्यांकन को देखते हुए इस तरह के होना चाहिए। सदस्य-डिजाइनर को एक साधारण पहचानकर्ता नहीं होना चाहिए।

+0

यही एकमात्र संयोजन था जिसे मैं कोशिश करने में असफल रहा। 10x – skyel

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