आकार को संकलन-समय ऑपरेटर क्यों कहा जाता है?
क्योंकि, संकलन के समय, संकलक आकार की गणना करता है और संकलित करता है जो संकलन-समय निरंतर मूल्य को प्रतिस्थापित करता है।
क्या यह वास्तव में एक रन-टाइम ऑपरेटर नहीं है?
नहीं। आप उन sizeof
अभिव्यक्तियों के आकार का मूल्यांकन करने के लिए भी उपयोग कर सकते हैं जिन्हें आप कानूनी रूप से निष्पादित नहीं कर सकते हैं (अर्थात, अपरिभाषित व्यवहार को उत्तेजित करेंगे), इसलिए जब तक संकलक यह पता लगा सकता है कि अभिव्यक्ति का प्रकार क्या है।
इसके अलावा, C ++ 11 से पहले भी constexpr
, आप उन sizeof
तरीकों का उपयोग कर सकते हैं, जिन्हें आप रन-टाइम अभिव्यक्तियों का उपयोग नहीं कर सकते हैं।
और अगर यह वास्तव में एक संकलन-समय ऑपरेटर है, तो यह पोर्टेबल कोड के उत्पादन में कैसे मदद करता है ...
विभिन्न प्लेटफार्मों पर आकार में प्रकार भिन्न हो सकते हैं। sizeof
हार्ड-कोडित मान्यताओं के बजाय अभिव्यक्ति का उपयोग करने का मतलब है कि जब आप एक अलग मंच और आपके प्रकार परिवर्तन आकार पर संकलन करते हैं तो आपका कोड नहीं टूटेगा।