5

शून्य करने के लिए मैं उपयोगकर्ता परिभाषित प्रकार की एक 2 डी सरणी प्रारंभ करने में कोशिश कर रहा हूँ के साथ एक 2 डी struct सरणी प्रारंभ करने की कोशिश कर रहा,चेतावनी जब निम्न पंक्ति का उपयोग करके दो प्रारंभकर्ता सूचियों

qmf_t X_hybrid_left[32][32] = {{0}}; 

कहाँ qmf_t एक उपयोगकर्ता परिभाषित प्रकार है। यहाँ मैं संकलक चेतावनी,

चेतावनी मिलती है:। लापता प्रारंभकर्ता आसपास ब्रेसिज़ [-Wmissing-ब्रेसिज़] "

लेकिन अगर मैं का उपयोग करें, qmf_t X_hybrid_left[32][32] = {{{0}}};, यानी 3 ब्रेसिज़ प्रत्येक पक्ष, चेतावनी गायब हो जाता है

, यह प्रत्येक पक्ष पर तीन ब्रेसिज़ उपयोग करने के लिए सही है? इसका क्या मतलब है?

+0

इस मामले में मैं केवल चेतावनी दबा दूंगा और कोड को '{0}' के रूप में लिखूंगा जो पूरी तरह ठीक है। – Lundin

उत्तर

12
qmf_t X_hybrid_left[32][32] = { /* Row initializers next */ 
           { /* Col initializers next */ 
            { /* Struct initializers next */ 
            0 
            } 
           } 
           }; 
qmf_t a = {0}; 
qmf_t b[5] = {{0}}; 
qmf_t c[10][5] = {{{0}}}; 

C11 चश्मा से 6.7.9 प्रारंभ व्याकरण

प्रारंभकर्ता:
काम अभिव्यक्ति
{प्रारंभकर्ता-सूची}
{प्रारंभकर्ता-सूची,}

यद्यपि आपका विशेष मामले में (शून्यीकरण 2 सरणी की सभी वस्तुएं), qmf_t X_hybrid_left[32][32] = {0};qmf_t X_hybrid_left[32][32] = {{{0}}}; के समान काम करेगी लेकिन संकलक आपको चेतावनी दे सकता है।

लेकिन यदि आप कोई गैर-शून्य प्रारंभ करना चाहते हैं, तो आपको एकाधिक ब्रेसिज़ का उपयोग करने की आवश्यकता है।

एक ही अनुभाग से:

[16] अन्यथा, एक वस्तु कुल है या उस के लिए प्रारंभकर्ता संघ प्रकार एक ब्रेस संलग्न सूची होगी की initializers तत्वों के लिए या नामित सदस्य हैं।

[20] कुल या संघ तत्व या सदस्यों को समुच्चय या यूनियनों हैं शामिल है, तो इन नियमों रिकर्सिवली subaggregates करने के लिए या यूनियनों निहित लागू होते हैं। यदि उपक्रम या निहित संघ का प्रारंभिक बाएं ब्रेस ब्रेस के साथ शुरू होता है, तो उस ब्रेस और उसके मिलान करने वाले दाएं ब्रेस से प्रारंभिक प्रारंभकर्ता या उपरोक्त तत्वों या निहित संघ के प्रारंभकर्ताओं को प्रारंभ करते हैं। अन्यथा, सूची से केवल पर्याप्त प्रारंभकर्ता उपरोक्त संघ के पहले सदस्य या के निहित संघ के तत्वों या सदस्यों के लिए खाते में ले गए हैं; किसी भी शेष प्रारंभिक को के कुल तत्व या सदस्य को प्रारंभ करने के लिए छोड़ा गया है जो वर्तमान उप-योग या निहित संघ एक हिस्सा है।

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