Різниця між Inline та Macro в C ++
Зміст
Макрос - це інструкція, яка розширюється в момент її виклику. Функції також можна визначити, як макроси. Аналогічно, вбудовані функції також розширюються в точці його виклику. Основна відмінність між вбудованою та макро функцією полягає в тому, що вбудовані функції розширюються протягом складання, та макроси розширюються, коли програма обробляється препроцесор.
Давайте вивчимо різницю між вбудованим та макросом за допомогою таблиці порівняння.
- Порівняльна діаграма
- Визначення
- Ключові відмінності
- Висновок
Порівняльна діаграма
Основа для порівняння | В лінію | Макрос |
---|---|---|
Основні | Вбудовані функції аналізують компілятор. | Макроси розширюються препроцесором. |
Синтаксис | inline return_type funct_name (параметри) {. . . } | #define macro_name char_sequence |
Використовувані ключові слова | в лінію | #define |
Визначений | Його можна визначити всередині або поза класом. | Це завжди визначається на початку програми. |
Оцінка | Він оцінює аргумент лише один раз. | Він оцінює аргумент кожного разу, коли він використовується в коді. |
Розширення | Компілятор може не вбудовувати та розширювати всі функції. | Макроси завжди розширені. |
Автоматизація | Короткі функції, визначені всередині класу, автоматично перетворюються на вбудовані функції. | Макроси слід визначати конкретно. |
Доступ | Функція вбудованого члена може отримати доступ до даних членів класу. | Макроси ніколи не можуть бути членами класу та не можуть отримати доступ до даних членів класу. |
Припинення | Визначення вбудованої функції закінчується фігурними дужками в кінці вбудованої функції. | Визначення макроса закінчується новим рядком. |
Налагодження | Налагодження легко для вбудованої функції, оскільки перевірка помилок проводиться під час компіляції. | Налагодження стає важким для макросів, оскільки перевірка помилок не відбувається під час компіляції. |
Пов'язування | Вбудована функція дуже добре пов'язує всі твердження в тілі функції, оскільки тіло функції починається і закінчується фігурними дужками. | Макрос стикається з проблемою прив'язки, якщо він містить більше одного оператора, оскільки він не має символу завершення. |
Визначення Inline
Вбудована функція схожа на звичайну функцію, але їй передує ключове слово "в лінію". Вбудовані функції - це функції короткої довжини, які розгортаються в точці його виклику, а не називаються. Розберемо вбудовані функції на прикладі.
#включати У вищезгаданій програмі я оголосив і визначив функцію Initialize () як вбудовану функцію класу "example". Код функції ініціалізації () розшириться там, де він викликається об'єктом класу "example". Дисплей функції (), визначений у прикладі класу, не оголошується вбудованим, але компілятором він може вважатися вбудованим, як в C ++ функція, визначена всередині класу, автоматично робиться вбудованою компілятором з урахуванням тривалості функції. Макрос - «директива про препроцесори». Перед компіляцією програма перевіряється препроцесором, і де вона знайде макрос у програмі, вона замінює цей макрос за своїм визначенням. Отже, макрос розглядається як «заміна». Вивчимо макрос на прикладі. #включати У наведеному вище коді я оголосив макро-функцію GREATER (), яка порівнює та знаходить більшу кількість обох параметрів. Ви можете помітити, що для завершення дії макросу немає крапки з комою, оскільки макрос закінчується лише новим рядком. Оскільки макрос є просто заміною, він розширить код макросу, де він викликається. Вбудовані функції набагато переконливіші, ніж макрофункція. C ++ також забезпечує кращий спосіб визначення константи, яка використовує ключове слово "const".
Визначення макросу
Висновки: