रेखा जो आप इंगित करते हैं कि संकलन एक चेतावनी उत्पन्न करता है। आइए आपके InitializeHero
फ़ंक्शन को अलग करें।
person hero = {0,0, {0,0}};
यहाँ आप अपने नए person
struct hero
नामित instantiating कर रहे हैं। आप संरचना के सदस्यों को सेट करने के लिए ब्रेस प्रारंभिक विधि का उपयोग करते हैं। इस मामले में, person
का एकमात्र सदस्य loc
है। loc
में केवल दो uint8_t
एस हैं। यहां ब्रेस प्रारंभिक विधि का उपयोग करके, आप बस {0, 0}
का उपयोग करेंगे।
person hero = {{0, 0}};
नोट है कि आप केवल ब्रेस आरंभीकरण उपयोग कर सकते हैं जब आरंभ:
इन दोनों का मेल, आप की तरह एक बयान लिख सकते हैं। आपके अन्य दो कथन असाइनमेंट हैं। इस बिंदु पर संरचना पहले ही शुरू हो चुकी है, यही कारण है कि उन दो बयान संकलित नहीं करते हैं।
एक अन्य ध्यान दें, अपने वैश्विक चर static person hero
InitializeHero
में स्थानीय चर hero
द्वारा आच्छादित किया गया है। इसका मतलब है कि आप अपने InitializeHero
में एक अलग person
संरचना बना रहे हैं। बहरहाल, यह स्थिर चर जहां यह इस मामले में घोषित किया जाता है आरंभ नहीं हो जाता है, तो आपके बयान
static person hero = {{0, 0}};
... छोड़ने InitializeHero
अप्रयुक्त अवश्य पढ़ें।
हू? आपका पहला प्रारंभ * संकलन * नहीं करता है। आपके पास '{}' के अंदर 4 स्केलर हैं और संरचना में केवल 2 स्केलर सदस्य हैं। यह सी – AnT
में एक त्रुटि है या अधिक डुप्लिकेट: http://stackoverflow.com/q/24138140/694576 – alk
संभावित डुप्लिकेट [एएनएसआई सी में एक स्ट्रक्चर कैसे प्रारंभ करें] (http://stackoverflow.com/प्रश्न/330793/कैसे-से-प्रारंभिक-ए-स्ट्रक्चर-इन-ansi-c) – alk