2011-02-14 21 views
15

मेरे पास केवल 32-बिट विंडोज़ स्थापित हैं, इसलिए मैं इसे स्वयं सत्यापित नहीं कर सकता।64-बिट विंडोज एपीआई: सी/सी ++ "ड्वॉर्ड" का आकार क्या है?

यदि मैं सही ढंग से समझता हूं, तो माइक्रोसॉफ्ट एपीआई में विभिन्न स्थानों में इस्तेमाल किया गया डीडब्ल्यूओआर मूल 16-बिट शब्द के संदर्भ में है, और वर्तमान हार्डवेयर आर्किटेक्चर के साथ इसका कोई लेना-देना नहीं है?

तो डीडब्ल्यूओआर जो 32 बिट्स लगता है, तब भी 32 बिट्स रहेगा जब भी मैं अंततः संकलित करता हूं और 64-बिट विंडोज़ में अपने ऐप को चलाने के लिए लिंक करता हूं? या डीडब्ल्यूओआर 128 बिट चौड़ा हो जाएगा?

उत्तर

19

32 और 64 के बीच आकार बदलने वाली एकमात्र चीज पॉइंटर्स हैं। तो डीडब्ल्यूओआर 32 बिट चौड़ा रहता है।

कुछ चीजें तुरंत स्पष्ट रूप से पॉइंटर्स नहीं हैं, उदा। हैंडल, लैपरम, WPARAM। लेकिन इन तीन परिवर्तन चौड़ाई के रूप में वे वास्तव में पॉइंटर्स पकड़ते हैं।

3

हे भगवान, यहाँ एक और उचित सवाल ... :)

यह हमेशा 32 बिट है, एक "शब्द" के बाद से 86 में 16 बिट माना जाता है आता है। यदि आकार बदल गया तो प्रोग्राम टूट जाएंगे।

यदि आपको देशी आकार DWORD की आवश्यकता है, तो DWORD_PTR आज़माएं।

(Don't ask क्या DWORD_PTR के बीच का अंतर, ULONG_PTR, UINT_PTR, और size_t है, I have no idea क्या माइक्रोसॉफ्ट सोच रहा था जब वह पहली बार तीन आविष्कार किया ...)

0

86 प्रोसेसर पर, एक DWORD 32 बिट है, यहां तक ​​कि 64-बिट विंडोज़ पर। यह Wikipedia article देखें।

2

डीडब्ल्यूओआर हमेशा 32 बिट्स (हस्ताक्षरित) है। QWORD हमेशा 64 बिट्स (हस्ताक्षरित) है। फिर DWORD32 और एक DWORD64 हैं जो 32 और 64 बिट्स हैं। मुझसे पूछते हैं कि क्यों वे देखते हैं :-)

http://msdn.microsoft.com/en-us/library/cc230318(v=PROT.10).aspx

http://msdn.microsoft.com/en-us/library/cc230362(v=PROT.10).aspx

और सामान्य

http://msdn.microsoft.com/en-us/library/cc230309(v=PROT.10).aspx

0

में मैं भी 86 मेहराब से आगे जाना होगा न करें। और सामान्य रूप से कहते हैं, एक शब्द 16 बिट माना जा सकता है। पदानुक्रम परंपरागत रूप से BYTE (8 बिट्स), वर्ड (16 बिट्स) है, और इसलिए एक ड्वॉर्ड (यदि डी को डबल चौड़ा शब्द माना जाता है) 32 बिट्स होगा। यह किसी विशेष मंच या भाषा के साथ कुछ भी करने की ज़रूरत नहीं है, बीईटीई 8 बिट्स है और एक वर्ड 16 बिट्स पुराने 8 बिट कंप्यूटर दिनों में वापस जा रहा है, x86 arch से पहले भी। अस्तित्व

+2

x86 अस्तित्व से पहले मुख्य फ्रेम पर 32 बिट्स एक शब्द था। –