2013-04-30 8 views
15

मैं विंडोज एपीआई में अपना पहला रूप ले रहा हूं और WNDCLASSX का सामना करने पर मैं यह सोचने में मदद नहीं कर सका कि इसके सदस्य, cbSize मौजूद क्यों हैं। एमएसडीएन के अनुसार cbSize का विवरण है: आकार, इस संरचना के बाइट्स में आकार। इस सदस्य को आकार (WNDCLASSEX) पर सेट करें। GetClassInfoEx फ़ंक्शन को कॉल करने से पहले इस सदस्य को सेट करना सुनिश्चित करें। यह इसका वर्णन करता है, और इसके उद्देश्य पर संकेत देता है, लेकिन मैं आवश्यकता को कम नहीं करता हूं।एक संरचना अपने आकार का स्टोर क्यों कर सकता है?

मेरा प्रश्न यह है: एक संरचना को कभी भी अपने आकार को स्टोर करने की आवश्यकता क्यों होगी? क्या sizeof का उपयोग करके उस जानकारी तक पहुंचने के लिए कोई भी फ़ंक्शन नहीं है?

+0

मेरा अनुमान है: मनाने। इसके अलावा दक्षता, यह आकार (कुछ) को चलाने के लिए और अधिक कुशल है, इसे स्टोर करने के बाद, इसे बार-बार उपयोग करने के बजाए इसे बार-बार उपयोग करें। –

+1

'do_something_with ((struct foo *) i_am_a_bar_ptr);' –

+0

संस्करण-सहायता और मशीन प्लेटफ़ॉर्म दो सामान्य कारण हैं। – WhozCraig

उत्तर

22

विंडोज एपीआई के बाद के संस्करण संरचना में नए फ़ील्ड जोड़ सकते हैं। यदि संरचना का आकार है, तो पुराना कोड एपीआई फ़ंक्शन को कॉल कर सकता है, जो केवल उन फ़ील्ड की प्रतिलिपि बनाता है जिन्हें पुराने कोड के बारे में पता है।

+7

शायद WinAPI ने इस समय कुछ सही किया है। :) –

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