typedef struct foo_s {
int a;
} foo;
typedef struct bar_s {
foo;
int b;
} bar;
अनिवार्य रूप से मैं क्या करना चाहते हैं:क्या मैं सी में एक संरचना का विस्तार कर सकता हूं?
bar b;
b.a;
मुझे पता है कि मैं b.foo_name.a अगर मैं बार में foo struct नाम दिया था कर सकता है, लेकिन ईद नहीं पसंद करते हैं।
ऐसा करने का कोई तरीका?
इस प्रश्न को विभिन्न उत्तरों के विभिन्न मिल गए हैं, इसलिए मुझे आवश्यकता की व्याख्या करने दें। कारण मैं ऐसा करना चाहता हूं क्योंकि मेरे पास एक पुस्तकालय है जिसे मुझे अपनी स्थिति में अनुकूलित करने की आवश्यकता है, जिसका अर्थ है कि मैं मूल संरचना अस्वीकरण को संशोधित नहीं कर सकता। इसके अलावा, मुझे बस इतना करना है कि संरचना की शुरुआत में 1 आइटम जोड़ें (शुरुआत क्यों? क्योंकि मेरे पास एक 'ऑब्जेक्ट' संरचना है जो परियोजना में सभी structs का नेतृत्व करती है)। मैं बस आपके जैसा उल्लेख कर सकता हूं जैसे संरचना को एम्बेड कर सकता हूं लेकिन यह वास्तव में कष्टप्रद है क्योंकि सभी संदर्भों को 'variable-> image.location' टाइप करना होगा जो 'छवि' है। एक अरब प्रकार टाइप किया वास्तव में कष्टप्रद है।
कुछ compilers वास्तव में है कि व्यवहार के रूप में की पेशकश एक विस्तार व्यक्तिगत रूप से मुझे लगता है कि यह बहुत अधिक जोखिम प्रदान करता है (घोंसले की संरचना 'छः परतों को गहरा कर रहा है और भूल रहा है कि आपने किन नामों का उपयोग किया है) इसलिए मैं पहले सदस्य' _' - लघु, संगत, रास्ते से बाहर, और बहुत ही असुविधाजनक नहीं । (नाम वास्तव में मानक और/या कंपाइलर द्वारा आरक्षित किया जा सकता है लेकिन मुझे संदेह है कि अगर कोई होता तो कोई इसका इस्तेमाल करेगा।) –
यदि 'छवि' बहुत टाइप करने के लिए परेशान है, तो' img' का उपयोग करें। अपने लिए यह करने के लिए ढूंढें और प्रतिस्थापित करें। चिंता न करें - जो भी आप करना चाहते हैं, आप जीवित रहेंगे। –
@ चचम 15 दोस्त, सी ++ के रूप में सी प्रश्न को टैग करने से बचें। ये दोनों पूरी तरह से अलग भाषाएं हैं। –