Разлика између инлине и макроа у Ц ++
Садржај
Макро је упутство које се проширује у тренутку његовог позива. Функције се такође могу дефинисати као макрои. Слично томе, инлине функције се такође проширују на месту њеног позива. Једна главна разлика између инлине и макро функције је та инлине функције су у току компилација, и макрои се проширују када програм обрађује предпроцесор.
Проучимо разлику између инлине и макронаредбе уз помоћ упоредног графикона.
- Упоредни графикон
- Дефиниција
- Кључне разлике
- Закључак
Упоредни графикон
Основе за упоређивање | У реду | Макро |
---|---|---|
Основни | Инлине функције компајлер рашчлањује. | Препроцесор проширује макронаредбе. |
Синтакса | инлине ретурн_типе фунцт_наме (параметри) {. . . } | #дефине макро_име цхар_секуенце |
Коришћене кључне речи | у реду | #дефинисати |
Дефинисан | Може се дефинисати унутар или изван класе. | Увек је дефинисан на почетку програма. |
Процена | Аргумент процењује само једном. | Она вреднује аргумент сваки пут када се користи у коду. |
Проширење | Компајлер можда не укључује и проширује све функције. | Макрои су увек проширени. |
Аутоматизација | Кратке функције, дефинисане унутар класе, аутоматски се извршавају на уграђеним функцијама. | Макрое треба посебно дефинисати. |
Приступање | Функција уграђених чланова може приступити члановима података класе. | Макрои никада не могу бити чланови класе и не могу приступити подацима чланова класе. |
Прекид | Дефиниција инлине функције завршава се коврчавим заградама на крају инлине функције. | Дефиниција макронаредбе завршава новом линијом. |
Отклањање грешака | Отклањање погрешака је једноставно за уграђену функцију, јер се провера грешака врши током компилације. | Отклањање погрешака постаје тешко за макронаредбе јер се не врши провера грешака током компилације. |
Везивање | Инлине функција врло добро веже све исказе у телу функције, као и тело функције које започиње и завршава са коврчавим заградама. | Макро се суочава са проблемом везања ако има више од једне изјаве, јер нема симбол завршетка. |
Дефиниција Инлине-а
Инлине функција изгледа као редовна функција, али јој претходи кључна реч „у реду“. Инлине функције су функције кратке дужине које се проширују на месту њеног позива, уместо да се зову. Да разумемо инлине функције са примером.
#инцлуде У горњем програму сам декларирао и дефинирао функцију иницијализирати (), као инлине функцију у класи „примјер“. Код функције иницијализације () проширит ће се тамо гдје је на њега позвао објект класе "екампле". Приказ функције (), дефиниран у примјеру класе, није декларисан инлине, али компајлер га може сматрати инлине у Ц ++ функцију дефинисану унутар класе аутоматски саставља инлине од стране компајлера узимајући у обзир дужину функције. Макро је „директива за процесоре“. Пре компилације програм прегледа прецесор и где год он нађе макро у програму, он га замењује дефиницијом. Стога се макро сматра „заменом“. Проучимо макро на примеру. #инцлуде У горњем коду, најавио сам макро функцију ГРЕАТЕР (), која упоређује и проналази већи број оба параметра. Можете приметити да не постоји тачка под зарезом која би прекинула макронаредбу, јер макронаредба прекида само нови ред. Како је макронаредба само замена, он ће проширити код макронаредбе тамо где се позива. Инлине функције су далеко убедљивије од макро функције. Ц ++ такође пружа бољи начин за дефинисање константе, која користи кључну реч „цонст“.
Дефиниција макроа
Закључци: