सी ++ मधील इनलाइन आणि मॅक्रो दरम्यान फरक

लेखक: Laura McKinney
निर्मितीची तारीख: 2 एप्रिल 2021
अद्यतन तारीख: 14 मे 2024
Anonim
विषय १०: (भाग ३)-इनलाइन फंक्शन|इनलाइन फंक्शन वि मॅक्रो|सीपीपी प्रोग्रामिंग
व्हिडिओ: विषय १०: (भाग ३)-इनलाइन फंक्शन|इनलाइन फंक्शन वि मॅक्रो|सीपीपी प्रोग्रामिंग

सामग्री


मॅक्रो ही एक सूचना आहे जी त्याच्या विनंतीच्या वेळी विस्तृत होते. फंक्शन्सची व्याख्या मॅक्रो प्रमाणेच केली जाऊ शकते. त्याचप्रमाणे इनलाइन करण्याच्या वेळीही इनलाइन फंक्शन्सचा विस्तार होतो. इनलाइन आणि मॅक्रो फंक्शनमधील एक प्राथमिक फरक म्हणजे तो इनलाइन कार्ये दरम्यान वाढविले जातात संकलन, आणि ते मॅक्रो प्रोग्रामद्वारे प्रक्रिया केली जाते तेव्हा विस्तृत केली जाते प्रीप्रोसेसर.

तुलना चार्टच्या मदतीने इनलाइन आणि मॅक्रोमधील फरक अभ्यासूया.

  1. तुलना चार्ट
  2. व्याख्या
  3. मुख्य फरक
  4. निष्कर्ष

तुलना चार्ट

तुलनासाठी आधारइनलाइनमॅक्रो
मूलभूत कंपाइलरद्वारे इनलाइन कार्ये विश्लेषित केली जातात.प्रीक्रोसेसरद्वारे मॅक्रोचा विस्तार केला जातो.
मांडणीइनलाइन रिटर्न_प्रकारे फंक्ट_नाव (मापदंड) {. . . }# परिभाषित मॅक्रो_नाव चार_सक्वेन्स
कीवर्ड वापरलेइनलाइन
#परिभाषित
परिभाषितहे वर्गात किंवा बाहेर परिभाषित केले जाऊ शकते.प्रोग्रामच्या सुरूवातीस हे नेहमी परिभाषित केले जाते.
मूल्यांकनहे फक्त एकदाच युक्तिवादाचे मूल्यांकन करते.प्रत्येक वेळी कोडमध्ये वापरल्या जाणार्‍या युक्तिवादाचे ते मूल्यांकन करते.
विस्तार कंपाईलर सर्व कार्ये इनलाइन आणि विस्तृत करू शकत नाही.मॅक्रो नेहमी वाढविले जातात.
ऑटोमेशनवर्गात परिभाषित केलेली छोटी फंक्शन्स आपोआप इनलाइन फंक्शन्सवर बनविली जातात.मॅक्रोची व्याख्या विशिष्टपणे केली पाहिजे.
प्रवेश करत आहेइनलाइन मेंबर फंक्शन वर्गाच्या डेटा सदस्यांमध्ये प्रवेश करू शकतो.मॅक्रो कधीही वर्गाचे सदस्य असू शकत नाहीत आणि वर्गाच्या डेटा सदस्यांपर्यंत प्रवेश करू शकत नाहीत.
समाप्तीइनलाइन फंक्शनची व्याख्या इनलाइन फंक्शनच्या शेवटी कर्ली कंस सह समाप्त होते.नवीन ओळीने मॅक्रो व्याख्या समाप्त होते.
डीबगिंगइनलाइन फंक्शनसाठी डीबग करणे सोपे आहे कारण संकलनाच्या वेळी त्रुटी तपासणी केली जाते.संकलन करताना त्रुटी तपासणी होत नसल्यामुळे मॅक्रोसाठी डीबग करणे कठीण होते.
बंधनकारकइनलाइन फंक्शन फंक्शनच्या मुख्य भागामध्ये सर्व स्टेटमेन्टस बांधून ठेवते तसेच फंक्शनच्या मुख्य भागास कर्ली कंस सह समाप्त होते.मॅक्रोकडे एकापेक्षा जास्त विधान असल्यास बंधनकारक समस्येचा सामना करावा लागतो, कारण त्यात समाप्ती चिन्ह नाही.


इनलाइन व्याख्या

इनलाइन फंक्शन नियमित फंक्शनसारखे दिसते परंतु त्यापूर्वी कीवर्ड “इनलाइन“. इनलाइन कार्ये म्हणजे लहान लांबीची कार्ये ज्याला बोलावण्याऐवजी त्याच्या विनंतीच्या वेळी वाढवले ​​जाते. चला उदाहरणासह इनलाइन कार्ये समजून घेऊया.

# समाविष्ट करा नेमस्पेस एसटीडी वापरणे; वर्ग उदाहरण {इंट अ, बी; सार्वजनिक: इनलाइन शून्य आरंभ (इंट एक्स, इंट वाय) {ए = एक्स; b = y} शून्य प्रदर्शन () out कोउट << अ << "" <

वरील प्रोग्राममध्ये मी "उदाहरण" क्लास मधील इनलाइन फंक्शन म्हणून फंक्शन इनिशियलाइज () इनिशियलाइज आणि परिभाषित केले. इनिशिएलायझेशन () फंक्शनचा कोड जेथे "उदाहरण" च्या ऑब्जेक्टद्वारे प्रक्षेपित केला जाईल तिथे विस्तारेल. वर्ग उदाहरणात परिभाषित केलेले फंक्शन डिस्प्ले () इनलाइन घोषित केले जात नाही परंतु कंपाईलरद्वारे ते इनलाइन मानले जाऊ शकते, सी ++ मध्ये फंक्शनची लांबी विचारात घेऊन वर्गाच्या आत परिभाषित केलेले फंक्शन आपोआप इनलाइन बनवले जातात.


  • इनलाइन फंक्शन फंक्शन कॉलिंग आणि रिटर्नचे ओव्हरहेड कमी करते ज्यामुळे प्रोग्रामच्या अंमलबजावणीची वेळ कमी होते.तसेच युक्तिवाद स्टॅकवर ढकलले जातात आणि फंक्शन कॉल केल्यावर रेजिस्टर सेव्ह केले जातात आणि फंक्शन परत येतो तेव्हा रीसेट होते, ज्यास वेळ लागतो, इनलाइन फंक्शन्सद्वारे हे टाळले जाते कारण प्रत्येक वेळी स्थानिक व्हेरिएबल्स आणि औपचारिक पॅरामीटर्स तयार करण्याची आवश्यकता नसते. .
  • इनलाइन कार्ये वर्गातील सदस्य असू शकतात आणि वर्गाच्या डेटा सदस्यात प्रवेश करू शकतात.
  • इनलाइन फंक्शन प्रोग्रामच्या अंमलबजावणीची वेळ कमी करते परंतु, कधीकधी जर इनलाइन फंक्शनची लांबी जास्त असेल तर डुप्लिकेट कोडमुळे प्रोग्रामचा आकार देखील वाढेल. म्हणूनच, अगदी लहान कार्ये करणे आवश्यक आहे.
  • इनलाइन फंक्शनच्या वितर्कचे केवळ एकदाच मूल्यांकन केले जाते.

मॅक्रो व्याख्या

मॅक्रो एक “प्रीप्रोसेसर डायरेक्टिव्ह” आहे. संकलन करण्यापूर्वी, प्रोग्रामची तपासणी प्रीप्रोसेसरद्वारे केली जाते आणि जिथे प्रोग्राममध्ये मॅक्रो आढळतो तो त्या मॅक्रोला त्याच्या परिभाषाने बदलवितो. म्हणूनच, मॅक्रोला "रिप्लेसमेंट" म्हणून मानले जाते. चला उदाहरणासह मॅक्रोचा अभ्यास करूया.

# समाविष्ट करा # डिफाइन ग्रेटर (अ, बी) ((ए <बी)? बी: ए) इंट मेन (रिक्त) {कोउट << "१० आणि २० मधील ग्रेटर" << ग्रेटर ("२०", "१०") << " n"; रिटर्न 0; }

वरील कोडमध्ये, मी मॅक्रो फंक्शन ग्रेटर () घोषित केले, जे दोन्ही पॅरामीटर्सची तुलना आणि जास्त संख्या शोधते. आपण हे पाहू शकता की मॅक्रो समाप्त करण्यासाठी अर्धविराम नाही कारण केवळ नवीन ओळीद्वारे मॅक्रो संपुष्टात आला आहे. मॅक्रो ही केवळ एक पुनर्स्थापनेची जागा आहे, परंतु जेथे तो आवाहन केला जाईल तिथे तो मॅक्रो कोडचा विस्तार करेल.

  • वाचन करताना प्रोग्रामरमधील प्रोग्रामरमधील सर्व मॅक्रो ओळखणे सुलभ करण्यासाठी मॅक्रो नेहमीच कॅपिटल अक्षरेमध्ये परिभाषित केले जातात.
  • मॅक्रो कधीही वर्गाचे सदस्य कार्य असू शकत नाही, किंवा ते कोणत्याही वर्गाच्या डेटा सदस्यांपर्यंत प्रवेश करू शकत नाही.
  • मॅक्रो फंक्शन जेव्हा प्रत्येक वेळी त्याच्या परिभाषेत दिसते तेव्हा युक्तिवादाचे मूल्यांकन करते ज्याचा परिणाम अनपेक्षित होतो.
  • मॅक्रो लहान आकाराचा असणे आवश्यक आहे कारण मोठे मॅक्रोज कोडच्या आकारात अनावश्यकपणे वाढ करेल.
  1. इनलाइन आणि मॅक्रो मधील मूलभूत फरक म्हणजे इनलाइन कार्ये कंपाईलरद्वारे विश्लेषित केल्या जातात, तर प्रोग्राममधील मॅक्रोज प्रीप्रोसेसरद्वारे वाढविले जातात.
  2. इनलाइन फंक्शन परिभाषित करण्यासाठी वापरलेला कीवर्ड हा आहे “इनलाइन”तर, मॅक्रो परिभाषित करण्यासाठी वापरलेला कीवर्ड“#परिभाषित“.
  3. एकदा इनलाइन फंक्शन क्लासमध्ये डिकॅल झाले की हे वर्गात किंवा वर्गाच्या बाहेरही परिभाषित केले जाऊ शकते. दुसरीकडे, प्रोग्रामच्या सुरूवातीस मॅक्रो नेहमी परिभाषित केला जातो.
  4. इनलाइन फंक्शन्सकडे पाठविलेले वितर्क केवळ एकदाच संकलित करताना स्पष्ट केले जाते, परंतु प्रत्येक वेळी संहितामध्ये मॅक्रो वापरल्या गेल्यानंतर मॅक्रो वितर्कचे मूल्यांकन केले जाते.
  5. कंपाईलर वर्गात परिभाषित केलेली सर्व कार्ये इनलाइन आणि विस्तृत करू शकत नाही. दुसरीकडे, मॅक्रो नेहमी वाढविला जातो.
  6. इनलाइन कीवर्डशिवाय वर्गात परिभाषित केलेले लहान फंक्शन आपोआप इनलाइन फंक्शन्स बनवले जातात. दुसरीकडे, मॅक्रोची व्याख्या विशिष्टपणे केली पाहिजे.
  7. इनलाईन असणारे फंक्शन वर्गातील सदस्यांपर्यंत पोहोचू शकते तर मॅक्रो क्लासच्या सदस्यांपर्यंत कधीच प्रवेश करू शकत नाही.
  8. इनलाइन फंक्शन समाप्त करण्यासाठी बंद कुरळे कंस आवश्यक आहे तर, नवीन लाइन सुरू होण्यासह मॅक्रो संपुष्टात आणला जातो.
  9. इनबले फंक्शनसाठी डीबग करणे सोपे होते कारण कोणत्याही त्रुटीसाठी ते संकलित करताना तपासले जाते. दुसरीकडे, संकलन करताना मॅक्रो तपासला जात नाही, तर मॅक्रो डीबग करणे कठीण होते.
  10. एखादा फंक्शन एक इनलाईन फंक्शन असल्याने त्याच्या सदस्यांना सुरुवातीच्या आणि बंद कुरळे कंसात बांधले जाते. दुसरीकडे, मॅक्रोमध्ये कोणतेही समाप्ती चिन्ह नसते, जेव्हा मॅक्रोमध्ये एक विधान अधिक असते तेव्हा बंधनकारक होते.

निष्कर्ष:

इनलाइन कार्ये मॅक्रो फंक्शनपेक्षा अधिक विश्वासार्ह आहेत. सी ++ कॉन्स्टेंटची व्याख्या करण्यासाठी एक चांगला मार्ग देखील प्रदान करते, जो “कॉन्स्ट” कीवर्ड वापरतो.