2016-07-18 10 views
8

सकल आरंभीकरण के साथ एक समग्र वर्ग वस्तु प्रारंभ करने में aggrete वर्ग वस्तु का डेटा सदस्यों initializes, एक समग्र का मूल्य आरंभीकरण पहले यह प्रारंभ जो भी पैडिंग बाइट्स के रूप में पालन करते हुए दिखाया गया है बाहर शून्य, शून्य जाएगा, जबकि कल्पना बोलीसकल मूल्य बनाम गद्दी

यदि टी (संभवत: सीवी-योग्य) गैर संघ वर्ग प्रकार है, प्रत्येक गैर स्थैतिक डेटा सदस्य और प्रत्येक आधार स्तरीय subobject शून्य प्रारंभ और गद्दी शून्य बिट्स को आरंभ नहीं हो जाता है,

इसका मतलब है कि आम तौर पर एक के बजाय क्योंकि बाद यह सुनिश्चित करें कि गद्दी बिट्स शून्य हैं नहीं है () का उपयोग करने और {} पसंद कुल structs आरंभ करने से बचना चाहिए करता है?

यदि उपर्युक्त का उत्तर "नहीं" है, तो ऐसे मामले हैं जहां कार्यान्वयन {} के साथ पैडिंग नहीं भरते हैं लेकिन () के साथ करते हैं? और इन मामलों में, प्रोग्रामर के लिए उपयोग करने के लिए बेहतर विकल्प क्या है?

+0

[क्लैंग] (http://coliru.stacked-crooked.com/a/e30e266d90c16662) नियम का सम्मान करता है, जबकि [gcc] (http://coliru.stacked-crooked.com/a/eff8609fc153d914) और एमएसवीसी अभी भी मेरे परीक्षण में पैडिंग बाइट्स निकाल देता है। – Jamboree

उत्तर

1

नहीं। सबसे पहले, मुझे संदेह है कि अधिकांश कंपाइलर्स वास्तव में एक मूल्य (पैडिंग सहित) के साथ एक कुल (दिए गए निरंतर तर्क) को शुरू करने के लिए मूल्यवान होंगे

हालांकि महत्वपूर्ण कारण यह नहीं है कि इस प्रकार का माइक्रो-ऑप्टिमाइज़ेशन तब तक छोड़ा जाना चाहिए जब तक आपके पास माप न हो, जो दिखाता है कि कोई समस्या है (और मुझे लगता है कि आप कभी भी उन मापों को प्राप्त नहीं करेंगे)। इस बीच, जो भी सबसे स्पष्ट है लिखें।

+0

धन्यवाद। मेरा प्रश्न तदनुसार अद्यतन किया गया है। आपने अपने संगठन को सिंगल-सदस्य समेकित क्यों प्रतिबंधित कर दिया है? अगर संरचनाओं में बहु-सदस्य होते हैं तो संभवतः कई इंटर सदस्य सदस्य पैडिंग के साथ कार्यान्वयन अलग-अलग व्यवहार करते हैं? –

+0

मेरा मतलब सिर्फ एकल-सदस्य योग नहीं था। मैं 'संरचना ए {चार सी; निकर; लंबे समय तक ll}; '128 या 256-बिट मान (निरंतर तर्क दिए गए) के साथ प्रारंभ किया जाना चाहिए, तीन अलग-अलग मान नहीं। –

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