సి ++ లో ఇన్లైన్ మరియు మాక్రో మధ్య తేడా

రచయిత: Laura McKinney
సృష్టి తేదీ: 2 ఏప్రిల్ 2021
నవీకరణ తేదీ: 16 మే 2024
Anonim
సి ++ లో ఇన్లైన్ మరియు మాక్రో మధ్య తేడా - టెక్నాలజీ
సి ++ లో ఇన్లైన్ మరియు మాక్రో మధ్య తేడా - టెక్నాలజీ

విషయము


మాక్రో అనేది ఒక ఇన్స్ట్రక్షన్ సమయంలో విస్తరించే ఒక సూచన. మాక్రోల మాదిరిగా విధులను కూడా నిర్వచించవచ్చు. అదేవిధంగా, ఇన్లైన్ ఫంక్షన్లు దాని ఆహ్వానం సమయంలో కూడా విస్తరిస్తాయి. ఇన్లైన్ మరియు స్థూల ఫంక్షన్ మధ్య ఒక ప్రాధమిక వ్యత్యాసం ఏమిటంటే ఇన్లైన్ విధులు సమయంలో విస్తరించబడతాయి సంగ్రహం, ఇంకా macros ప్రోగ్రామ్ ప్రాసెస్ చేసినప్పుడు విస్తరించబడుతుంది ప్రాసెసర్.

పోలిక చార్ట్ సహాయంతో ఇన్లైన్ మరియు స్థూల మధ్య వ్యత్యాసాన్ని అధ్యయనం చేద్దాం.

  1. పోలిక చార్ట్
  2. నిర్వచనం
  3. కీ తేడాలు
  4. ముగింపు

పోలిక చార్ట్

పోలిక కోసం ఆధారంలైన్ లోమాక్రో
ప్రాథమిక ఇన్లైన్ ఫంక్షన్లు కంపైలర్ చేత అన్వయించబడతాయి.మాక్రోలు ప్రిప్రాసెసర్ చేత విస్తరించబడతాయి.
సింటాక్స్ఇన్లైన్ రిటర్న్_టైప్ ఫంక్ట్_పేరు (పారామితులు) {. . . }# స్థూల_పేరు చార్_అనుకలను నిర్వచించండి
ఉపయోగించిన కీలకపదాలులైన్ లో
# define
నిర్వచితతరగతి లోపల లేదా వెలుపల దీనిని నిర్వచించవచ్చు.ఇది ఎల్లప్పుడూ ప్రోగ్రామ్ ప్రారంభంలో నిర్వచించబడుతుంది.
మూల్యాంకనంఇది ఒక్కసారి మాత్రమే వాదనను అంచనా వేస్తుంది.ఇది కోడ్‌లో ఉపయోగించిన ప్రతిసారీ వాదనను అంచనా వేస్తుంది.
విస్తరణ కంపైలర్ అన్ని ఫంక్షన్లను ఇన్లైన్ చేసి విస్తరించకపోవచ్చు.మాక్రోలు ఎల్లప్పుడూ విస్తరించబడతాయి.
ఆటోమేషన్తరగతి లోపల నిర్వచించబడిన చిన్న ఫంక్షన్లు స్వయంచాలకంగా ఇన్లైన్ ఫంక్షన్లలో తయారు చేయబడతాయి.మాక్రోలను ప్రత్యేకంగా నిర్వచించాలి.
యాక్సెస్ఇన్లైన్ సభ్యుల ఫంక్షన్ తరగతి యొక్క డేటా సభ్యులను యాక్సెస్ చేయగలదు.మాక్రోస్ ఎప్పుడూ తరగతి సభ్యులుగా ఉండలేరు మరియు తరగతి యొక్క డేటా సభ్యులను యాక్సెస్ చేయలేరు.
తొలగింపులుఇన్లైన్ ఫంక్షన్ యొక్క నిర్వచనం ఇన్లైన్ ఫంక్షన్ చివరిలో వంకర బ్రాకెట్లతో ముగుస్తుంది.స్థూల నిర్వచనం కొత్త పంక్తితో ముగుస్తుంది.
డీబగ్గింగ్సంకలనం సమయంలో లోపం తనిఖీ చేయబడినందున ఇన్లైన్ ఫంక్షన్ కోసం డీబగ్గింగ్ సులభం.సంకలనం సమయంలో లోపం తనిఖీ జరగనందున డీబగ్గింగ్ మాక్రోలకు కష్టమవుతుంది.
బైండింగ్ఇన్లైన్ ఫంక్షన్ ఫంక్షన్ యొక్క శరీరంలోని అన్ని స్టేట్మెంట్లను బాగా బంధిస్తుంది, ఫంక్షన్ యొక్క శరీరం ప్రారంభమవుతుంది మరియు వంకర బ్రాకెట్లతో ముగుస్తుంది.ఒక స్థూలానికి ఒకటి కంటే ఎక్కువ స్టేట్‌మెంట్ ఉంటే, దానికి ముగింపు చిహ్నం లేనందున బైండింగ్ సమస్యను ఎదుర్కొంటుంది.


ఇన్లైన్ యొక్క నిర్వచనం

ఇన్లైన్ ఫంక్షన్ రెగ్యులర్ ఫంక్షన్ లాగా కనిపిస్తుంది, కానీ దీనికి ముందు కీవర్డ్ “లైన్ లో". ఇన్లైన్ ఫంక్షన్లు చిన్న పొడవు ఫంక్షన్లు, వీటిని పిలవడానికి బదులుగా దాని పిలుపు సమయంలో విస్తరిస్తాయి. ఉదాహరణతో ఇన్లైన్ ఫంక్షన్లను అర్థం చేసుకుందాం.

# ఉన్నాయి నేమ్‌స్పేస్ std ఉపయోగించి; తరగతి ఉదాహరణ {int a, b; పబ్లిక్: ఇన్లైన్ శూన్య ప్రారంభ (int x, int y) {a = x; b = y} శూన్య ప్రదర్శన () {cout << a << "" <

పై ప్రోగ్రామ్‌లో, క్లాస్ “ఉదాహరణ” లో ఇన్లైన్ ఫంక్షన్‌గా ఫంక్షన్ ప్రారంభిస్తుంది () అని నేను ప్రకటించాను మరియు నిర్వచించాను. క్లాస్ "ఉదాహరణ" యొక్క ఆబ్జెక్ట్ చేత ప్రారంభించబడిన చోట ప్రారంభ () ఫంక్షన్ యొక్క కోడ్ విస్తరిస్తుంది .క్లాస్ ఉదాహరణలో నిర్వచించిన ఫంక్షన్ డిస్ప్లే () ఇన్లైన్గా ప్రకటించబడదు కాని ఇది కంపైలర్ చేత ఇన్లైన్ గా పరిగణించబడుతుంది, C ++ లో క్లాస్ లోపల నిర్వచించిన ఫంక్షన్ స్వయంచాలకంగా కంపైలర్ చేత ఫంక్షన్ యొక్క పొడవును పరిగణనలోకి తీసుకుంటుంది.


  • ఇన్లైన్ ఫంక్షన్ ఫంక్షన్ కాలింగ్ మరియు తిరిగి రావడం యొక్క ఓవర్ హెడ్ ను తగ్గిస్తుంది, ఇది ప్రోగ్రామ్ యొక్క అమలు సమయాన్ని తగ్గిస్తుంది.అలాగే, వాదనలు స్టాక్‌పైకి నెట్టబడతాయి మరియు ఫంక్షన్ పిలువబడినప్పుడు రిజిస్టర్‌లు సేవ్ చేయబడతాయి మరియు ఫంక్షన్ రిటర్న్ అయినప్పుడు రీసెట్ చేయబడతాయి, ఇది సమయం పడుతుంది, ప్రతిసారీ స్థానిక వేరియబుల్స్ మరియు ఫార్మల్ పారామితులను సృష్టించాల్సిన అవసరం లేనందున ఇది ఇన్లైన్ ఫంక్షన్ల ద్వారా నివారించబడుతుంది. .
  • ఇన్లైన్ విధులు తరగతి సభ్యునిగా ఉండవచ్చు మరియు తరగతి యొక్క డేటా సభ్యుడిని కూడా యాక్సెస్ చేయవచ్చు.
  • ఇన్లైన్ ఫంక్షన్ ప్రోగ్రామ్ యొక్క అమలు సమయాన్ని తగ్గిస్తుంది, అయితే, కొన్నిసార్లు ఇన్లైన్ ఫంక్షన్ యొక్క పొడవు ఎక్కువగా ఉంటే, నకిలీ కోడ్ కారణంగా ప్రోగ్రామ్ యొక్క పరిమాణం కూడా పెరుగుతుంది. అందువల్ల, చాలా చిన్న ఫంక్షన్లను ఇన్లైన్ చేయడం మంచి పద్ధతి.
  • ఇన్లైన్ ఫంక్షన్ యొక్క వాదన ఒక్కసారి మాత్రమే అంచనా వేయబడుతుంది.

మాక్రో యొక్క నిర్వచనం

మాక్రో అనేది “ప్రిప్రాసెసర్స్ డైరెక్టివ్”. సంకలనానికి ముందు, ప్రోగ్రామ్ ప్రిప్రాసెసర్ చేత పరిశీలించబడుతుంది మరియు ప్రోగ్రామ్‌లో స్థూలతను ఎక్కడ కనుగొన్నా, అది ఆ స్థూల స్థానాన్ని దాని నిర్వచనం ప్రకారం భర్తీ చేస్తుంది. అందువల్ల, స్థూలని "పున ment స్థాపన" గా పరిగణిస్తారు. ఒక ఉదాహరణతో స్థూల అధ్యయనం చేద్దాం.

# ఉన్నాయి # GREATER (a, b) ((a <b)? b: a) int main (void) {cout << "10 మరియు 20 లలో గొప్పది" << GREATER ("20", "10") << " n"; తిరిగి 0; }

పై కోడ్‌లో, నేను మాక్రో ఫంక్షన్ GREATER () ను ప్రకటించాను, ఇది రెండు పారామితుల యొక్క ఎక్కువ సంఖ్యను పోల్చి కనుగొంటుంది. మాక్రోను కొత్త పంక్తి ద్వారా మాత్రమే ముగించినందున స్థూలతను ముగించడానికి సెమికోలన్ లేదని మీరు గమనించవచ్చు. స్థూల స్థానం కేవలం పున ment స్థాపన కాబట్టి, అది స్థూల సంకేతాన్ని విస్తరిస్తుంది.

  • ప్రోగ్రామర్లు చదివేటప్పుడు ప్రోగ్రామ్‌లోని అన్ని మాక్రోలను సులభంగా గుర్తించడం కోసం మాక్రోలు ఎల్లప్పుడూ పెద్ద అక్షరాలతో నిర్వచించబడతాయి.
  • స్థూల ఎప్పటికీ తరగతి సభ్యుల ఫంక్షన్ కాదు, లేదా అది ఏ తరగతిలోని డేటా సభ్యులను యాక్సెస్ చేయదు.
  • స్థూల ఫంక్షన్ దాని నిర్వచనంలో కనిపించిన ప్రతిసారీ వాదనను అంచనా వేస్తుంది, ఇది unexpected హించని ఫలితాన్ని ఇస్తుంది.
  • మాక్రో చిన్న పరిమాణంలో ఉండాలి ఎందుకంటే పెద్ద మాక్రోలు అనవసరంగా కోడ్ పరిమాణాన్ని పెంచుతాయి.
  1. ఇన్లైన్ మరియు స్థూల మధ్య ప్రాథమిక వ్యత్యాసం ఏమిటంటే, ఇన్లైన్ ఫంక్షన్లు కంపైలర్ చేత అన్వయించబడతాయి, అయితే, ప్రోగ్రామ్ లోని మాక్రోలు ప్రిప్రాసెసర్ చేత విస్తరించబడతాయి.
  2. ఇన్లైన్ ఫంక్షన్‌ను నిర్వచించడానికి ఉపయోగించే కీవర్డ్ “లైన్ లో”అయితే, స్థూలతను నిర్వచించడానికి ఉపయోగించే కీవర్డ్“# define“.
  3. తరగతి లోపల ఇన్లైన్ ఫంక్షన్ క్షీణించిన తర్వాత, దానిని తరగతి లోపల లేదా తరగతి వెలుపల నిర్వచించవచ్చు. మరోవైపు, ప్రోగ్రామ్ ప్రారంభంలో మాక్రో ఎల్లప్పుడూ నిర్వచించబడుతుంది.
  4. సంకలనం చేసేటప్పుడు ఇన్లైన్ ఫంక్షన్లకు పంపిన వాదన ఒక్కసారి మాత్రమే పరిణామం చెందుతుంది, అయితే ప్రతిసారీ మాక్రోలను కోడ్‌లో మాక్రో ఉపయోగించినప్పుడు అంచనా వేస్తారు.
  5. కంపైలర్ క్లాస్ లోపల నిర్వచించిన అన్ని ఫంక్షన్లను ఇన్లైన్ చేసి విస్తరించకపోవచ్చు. మరోవైపు, మాక్రోలు ఎల్లప్పుడూ విస్తరిస్తాయి.
  6. ఇన్లైన్ కీవర్డ్ లేకుండా తరగతి లోపల నిర్వచించబడిన చిన్న ఫంక్షన్ స్వయంచాలకంగా ఇన్లైన్ ఫంక్షన్లుగా తయారవుతుంది. మరోవైపు, మాక్రోను ప్రత్యేకంగా నిర్వచించాలి.
  7. ఇన్లైన్ అయిన ఒక ఫంక్షన్ తరగతి సభ్యులను యాక్సెస్ చేయగలదు, అయితే స్థూల తరగతి సభ్యులను ఎప్పటికీ యాక్సెస్ చేయలేరు.
  8. ఇన్లైన్ ఫంక్షన్‌ను ముగించడానికి క్లోజ్డ్ కర్లీ బ్రేస్ అవసరం అయితే, కొత్త లైన్ ప్రారంభంతో స్థూల రద్దు చేయబడుతుంది.
  9. ఏదైనా లోపం కోసం సంకలనం సమయంలో తనిఖీ చేయబడినందున డీబగ్గింగ్ ఇన్లే ఫంక్షన్ కోసం సులభం అవుతుంది. మరోవైపు, సంకలనం చేసేటప్పుడు స్థూల తనిఖీ చేయబడదు, స్థూల డీబగ్ చేయడం కష్టం అవుతుంది.
  10. ఒక ఫంక్షన్ కావడం ఇన్లైన్ ఫంక్షన్ దాని సభ్యులను ప్రారంభ మరియు మూసివేసిన వంకర కలుపులలో బంధిస్తుంది. మరోవైపు, స్థూలానికి ఎటువంటి ముగింపు చిహ్నం లేదు, కాబట్టి స్థూలంలో ఎక్కువ స్టేట్‌మెంట్‌లు ఉన్నప్పుడు బైండింగ్ కష్టం అవుతుంది.

తీర్మానాలు:

స్థూల ఫంక్షన్ కంటే ఇన్లైన్ ఫంక్షన్లు చాలా నమ్మదగినవి. C ++ స్థిరాంకాన్ని నిర్వచించడానికి మంచి మార్గాన్ని కూడా అందిస్తుంది, ఇది “const” కీవర్డ్‌ని ఉపయోగిస్తుంది.