2010-10-25 17 views
8

निम्नलिखित कथन वास्तव में क्या करता है और इसका क्या प्रभाव है?सी ++ #pragma पैक

#pragma pack(push,8) 
+0

http://msdn.microsoft.com/en-us/library/2e70t5y1(VS.80).aspx –

उत्तर

13

यह (ताकि आप pop के माध्यम से बाद में इसे बहाल कर सकते हैं) एक ढेर पर वर्तमान pack सेटिंग धक्का और फिर 8 बाइट्स struct तत्वों के लिए संरेखण सेट करता है। जो कुछ भी 8 बाइट सीमा से स्वाभाविक रूप से गठबंधन नहीं किया गया है, उसके लिए आवश्यक संरेखण को बनाए रखने के लिए पहले पैडिंग बाइट डाले जाएंगे।

+5

प्रभावों को देखने के लिए बस एक अतिरिक्त: विभिन्न आकारों के कुछ तत्वों (जैसे ' चार', 'छोटा', ​​'लंबा', 'डबल')। फिर 'sizeof' का उपयोग कर संरचना का आकार निर्धारित करें। 'N' (उदा। 1, 2, 4, 8) के लिए विभिन्न मानों के साथ संरचना के चारों ओर' #pragma पैक (पुश, एन) 'और' #pragma पैक (पॉप) 'की एक जोड़ी रखें। देखें कि 'sizeof' के परिणाम कैसे बदलते हैं। एक विकल्प के रूप में, संरचना के तत्वों के सापेक्ष पते में परिवर्तन देखें। – Flinsch

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