Հիմնական տարբերություն – Մակրո ընդդեմ ներկառուցված ֆունկցիայի
Մակրոն կոդի հատված է, որը նախապրոցեսորային հրահանգ է: Ներդիր ֆունկցիան C++-ի կատարելագործման հատկություն է՝ ծրագրի կատարման ժամանակը նվազագույնի հասցնելու համար: Հետևաբար, Macro-ի և Inline Function-ի միջև հիմնական տարբերությունն այն է, որ մակրոն ստուգվում է նախապրոցեսորի կողմից, մինչդեռ ներկառուցված ֆունկցիան ստուգվում է կոմպիլյատորի կողմից:
Մակրո ներառված է ծրագրի սկզբում, որին նախորդում է հեշ նշանը: Երբ ծրագրում կա մակրոյի անունը, այն փոխարինվում է մակրոյի բովանդակությամբ։
Ի՞նչ է մակրոն:
Նախապրոցեսորը ծրագիր է, որը մշակում է ելակետային կոդը, նախքան այն անցնելը կոմպիլյատորի միջով:Այն գործում է նախապրոցեսորի հրամանի տողի կամ հրահանգների միջոցով: Ծրագրում նախապրոցեսորային դիրեկտիվները տեղադրվում են սկզբնաղբյուր ծրագրում հիմնական ծրագրից առաջ։ Նախքան սկզբնական կոդը անցնելը կոմպիլյատորով, այն ստուգվում է նախապրոցեսորի կողմից նախապրոցեսորային հրահանգների համար: Նախապրոցեսորի հրահանգներն ունեննշան: Ի տարբերություն այլ հայտարարությունների, դրանք չեն ավարտվում ստորակետով։ Նախապրոցեսորային հրահանգներից մեկը մակրո է: Սովորաբար մակրոները գրվում են մեծատառերով։
Նկար 01. C++ ծրագիր մակրոներով
Ըստ վերը նշված ծրագրի, տող 3-ը և տող 4-ը ցույց են տալիս մակրոները: Տարածքը հաշվարկելիս PI արժեքը փոխարինվում է սահմանված մակրոյով: 14-րդ տողում՝ volume=CUBE (արժեք), նախապրոցեսորն ընդլայնում է հայտարարությունը՝ որպես volume=(արժեքարժեքարժեք):Խորանարդը գտնելը կարող է գրվել որպես ֆունկցիա, բայց այստեղ այն գրվում է մակրոյով: Եթե կա հայտարարություն որպես ծավալ=CUBE(x+y), ապա այն կընդլայնվի մինչև ծավալը=(x+yx+yx+y):
Ծրագրավորման որոշ նշաններ կարող են հեշտությամբ սխալ մուտքագրվել: Նրանք կարող են փոխարինվել մակրոների միջոցով: օր. սահմանել ԵՎ &&, սահմանել ԿԱՄ ||. Մակրո սահմանումը կարող է ներառել նաև այնպիսի արտահայտություններ, ինչպիսիք են define AREA 45.56.
Ի՞նչ է Inline ֆունկցիան:
Երբ ֆունկցիան կանչվում է, կոմպիլյատորը որոշ ժամանակ է պահանջում այն գործարկելու համար: Եթե ֆունկցիան այնքան էլ բարդ չէ, ծրագրավորողը կարող է ֆունկցիան վերածել ներդիրային ֆունկցիայի: Տե՛ս ստորև ներկայացված ծրագիրը։
Գծապատկեր 02. Գործառույթ առանց Inline
Print_hello-ը պարզ ֆունկցիա է: Այն տպում է «Բարև» տողը, երբ ֆունկցիան կանչվում է: Այդ ֆունկցիայի կատարման ժամանակը 0,187 վրկ է։ Ներկառուցված հիմնաբառը հետևյալ կերպ օգտագործելիս կատարման ժամանակը կրճատվում է մինչև 0,064 վրկ:
Նկար 03. Ներդիր ֆունկցիա
Հետևաբար, օգտագործելով ներկառուցված հիմնաբառը, կատարման ժամանակը նվազում է։ Ներքին գործառույթները կարող են չաշխատել, եթե կան հանգույցներ, անջատիչ հայտարարություններ և եթե ֆունկցիան պարունակում է ստատիկ փոփոխականներ կամ ռեկուրսիվ ֆունկցիաներ:
Ո՞րն է տարբերությունը մակրո և ներդիրային ֆունկցիաների միջև:
Մակրո ընդդեմ ներկառուցված ֆունկցիայի |
|
Մակրոն կոդի հատված է, որը նախապրոցեսորային հրահանգ է, որը ներառված է ծրագրի սկզբում, որին նախորդում է հեշ նշանը: | Inline ֆունկցիան C++-ի կատարելագործման հատկություն է՝ ծրագրի կատարման ժամանակը նվազագույնի հասցնելու համար: |
Գնահատման ժամանակը | |
Մակրոյում արգումենտը գնահատվում է ամեն անգամ, երբ այն օգտագործվում է ծրագրում: | Ներդիրում արգումենտը գնահատվում է մեկ անգամ: |
Ստուգված է | |
Մակրոն ստուգվում է նախապրոցեսորի կողմից: | Կազմողի կողմից ստուգվում է ներկառուցված ֆունկցիան: |
Հիմնաբառ | |
Մարկոն օգտագործում է define. | Inline ֆունկցիան օգտագործում է «inline» հիմնաբառը: |
Օգտագործում | |
Մակրոն կարող է օգտագործվել հաստատուններ, արտահայտություններ սահմանելու, բառացի տեքստի փոխարինման և գործառույթներ սահմանելու համար և այլն: | Ծրագրի կատարման ժամանակը նվազագույնի հասցնելու համար կարող է օգտագործվել ներկառուցված ֆունկցիա: |
Դադարեցում | |
Մակրոն ավարտվում է նոր տողով: | Inline ֆունկցիան ավարտվում է գանգուր փակագծով ներգծային ֆունկցիայի վերջում: |
Սահմանիչ կետ | |
A Marco սահմանվում է ծրագրի սկզբում: | Ներդիր ֆունկցիան կարող է լինել դասի ներսում կամ դրսում: |
Ամփոփում – Մակրո ընդդեմ ներկառուցված ֆունկցիայի
Այս հոդվածը քննարկեց մակրո և ներդիրային ֆունկցիաների միջև եղած տարբերությունը: Այս հասկացությունները օգտագործվում են C++ ծրագրավորման մեջ։ Macro-ի և Inline Function-ի միջև տարբերությունն այն է, որ մակրոն ստուգվում է նախապրոցեսորի կողմից, իսկ ներկառուցված ֆունկցիան ստուգվում է կոմպիլյատորի կողմից: