C ++ में इनलाइन और मैक्रो के बीच अंतर
विषय
मैक्रो एक निर्देश है जो इसके आह्वान के समय फैलता है। कार्य को मैक्रोज़ की तरह भी परिभाषित किया जा सकता है। इसी प्रकार, इनलाइन कार्य भी अपने आह्वान के बिंदु पर विस्तार करते हैं। इनलाइन और मैक्रो फ़ंक्शन के बीच एक प्राथमिक अंतर यह है कि इनलाइन कार्य के दौरान विस्तारित हैं संकलन, और यह मैक्रो कार्यक्रम द्वारा संसाधित होने पर विस्तारित किया जाता है पूर्वप्रक्रमक.
तुलना चार्ट की मदद से इनलाइन और मैक्रो के बीच के अंतर का अध्ययन करें।
- तुलना चार्ट
- परिभाषा
- मुख्य अंतर
- निष्कर्ष
तुलना चार्ट
तुलना के लिए आधार | पंक्ति में | मैक्रो |
---|---|---|
बुनियादी | इनलाइन फ़ंक्शन कंपाइलर द्वारा पार्स किए जाते हैं। | मैक्रोज़ का विस्तार प्रीप्रोसेसर द्वारा किया जाता है। |
वाक्य - विन्यास | इनलाइन रिटर्न_टाइप फंक्शनल_नाम (पैरामीटर) {। । । } | #define मैक्रो_नाम चार_परिवर्तन |
कीवर्ड का इस्तेमाल किया | पंक्ति में | #define |
परिभाषित | इसे कक्षा के अंदर या बाहर परिभाषित किया जा सकता है। | यह हमेशा कार्यक्रम की शुरुआत में परिभाषित किया जाता है। |
मूल्यांकन | यह केवल एक बार तर्क का मूल्यांकन करता है। | यह कोड में उपयोग किए जाने वाले तर्क का हर बार मूल्यांकन करता है। |
विस्तार | कंपाइलर सभी कार्यों को इनलाइन और विस्तारित नहीं कर सकता है। | मैक्रों का हमेशा विस्तार होता है। |
स्वचालन | क्लास के अंदर परिभाषित छोटे फ़ंक्शंस, इनलाइन फ़ंक्शंस पर स्वचालित रूप से किए जाते हैं। | मैक्रोज़ को विशेष रूप से परिभाषित किया जाना चाहिए। |
एक्सेस करना | इनलाइन सदस्य फ़ंक्शन कक्षा के डेटा सदस्यों तक पहुंच सकता है। | मैक्रोज़ कभी भी वर्ग के सदस्य नहीं हो सकते हैं और कक्षा के डेटा सदस्यों तक नहीं पहुँच सकते हैं। |
समाप्ति | इनलाइन फ़ंक्शन की परिभाषा इनलाइन फ़ंक्शन के अंत में घुंघराले कोष्ठक के साथ समाप्त होती है। | मैक्रो की परिभाषा नई लाइन के साथ समाप्त होती है। |
डिबगिंग | इनलाइन फ़ंक्शन के लिए डीबग करना आसान है क्योंकि संकलन के दौरान त्रुटि की जाँच की जाती है। | डीबग करना मैक्रोज़ के लिए मुश्किल हो जाता है क्योंकि संकलन के दौरान त्रुटि की जाँच नहीं होती है। |
बाइंडिंग | इनलाइन फ़ंक्शन फ़ंक्शन के शरीर में सभी कथनों को बहुत अच्छी तरह से बांधता है और फ़ंक्शन का शरीर घुंघराले कोष्ठक के साथ शुरू और समाप्त होता है। | एक मैक्रो बाध्यकारी समस्या का सामना करता है यदि इसमें एक से अधिक कथन हैं, क्योंकि इसमें कोई समाप्ति चिन्ह नहीं है। |
इनलाइन की परिभाषा
इनलाइन फ़ंक्शन एक नियमित फ़ंक्शन की तरह दिखता है, लेकिन कीवर्ड से पहले है "पंक्ति में"। इनलाइन फ़ंक्शंस छोटी लंबाई के फ़ंक्शंस हैं, जिन्हें इसके आह्वान के बजाय इसके आह्वान के बिंदु पर विस्तारित किया जाता है। आइए इनलाइन फ़ंक्शन को एक उदाहरण से समझते हैं।
#शामिल उपरोक्त कार्यक्रम में, मैंने घोषित किया और परिभाषित किया, फ़ंक्शन "उदाहरण" में इनलाइन फ़ंक्शन के रूप में प्रारंभ ()। आरंभीकरण () फ़ंक्शन के कोड का विस्तार होगा जहां इसे कक्षा "उदाहरण" के उद्देश्य से लागू किया जाता है। क्लास के उदाहरण में परिभाषित फ़ंक्शन डिस्प्ले () को इनलाइन घोषित नहीं किया गया है, लेकिन इसे इनलाइनर द्वारा इनलाइन माना जा सकता है, जैसा कि C ++ में वर्ग के अंदर परिभाषित फ़ंक्शन को फ़ंक्शन की लंबाई को देखते हुए कंपाइलर द्वारा स्वचालित रूप से इनलाइन बनाया जाता है। मैक्रो एक "पूर्वप्रक्रमक निर्देश" है। संकलन से पहले, प्रोग्राम को प्रीप्रोसेसर द्वारा जांचा जाता है और जहां कभी प्रोग्राम में मैक्रो का पता चलता है, वह उस मैक्रो को इसकी परिभाषा से बदल देता है। इसलिए, मैक्रो को "प्रतिस्थापन" माना जाता है। आइए एक उदाहरण के साथ मैक्रो का अध्ययन करें। #शामिल उपरोक्त कोड में, मैंने एक मैक्रो फ़ंक्शन GREATER () की घोषणा की, जो दोनों मापदंडों की अधिक से अधिक संख्या की तुलना और पता लगाता है। आप देख सकते हैं कि मैक्रो को समाप्त करने के लिए कोई अर्धविराम नहीं है क्योंकि मैक्रो को केवल नई लाइन द्वारा समाप्त किया जाता है। चूंकि मैक्रो सिर्फ एक प्रतिस्थापन है, यह मैक्रो के कोड का विस्तार करेगा जहां इसे लागू किया गया है। इनलाइन फ़ंक्शन मैक्रो फ़ंक्शन की तुलना में कहीं अधिक ठोस हैं। C ++ भी एक स्थिरांक को परिभाषित करने का एक बेहतर तरीका प्रदान करता है, जो "कॉन्स्ट" कीवर्ड का उपयोग करता है।
मैक्रो की परिभाषा
निष्कर्ष: