Разница между встроенным и макросом в C ++
Содержание
Макрос - это инструкция, которая расширяется во время своего вызова. Функции также могут быть определены, как макросы. Аналогично, встроенные функции также расширяются в точке их вызова. Одно из основных различий между встроенной и макро-функцией заключается в том, что встроенные функции расширяются во время сборники макрос раскрываются, когда программа обрабатывается препроцессор.
Давайте изучим разницу между inline и macro с помощью сравнительной таблицы.
- Сравнительная таблица
- Определение
- Ключевые отличия
- Заключение
Сравнительная таблица
Основа для сравнения | В линию | макрос |
---|---|---|
основной | Встроенные функции анализируются компилятором. | Макросы расширяются препроцессором. |
Синтаксис | inline return_type funct_name (параметры) {. , , } | #define macro_name char_sequence |
Используемые ключевые слова | в линию | #define |
определенный | Это может быть определено внутри или вне класса. | Он всегда определяется в начале программы. |
оценка | Он оценивает аргумент только один раз. | Он оценивает аргумент каждый раз, когда он используется в коде. |
расширение | Компилятор не может быть встроенным и расширять все функции. | Макросы всегда расширяются. |
автоматизация | Короткие функции, определенные внутри класса, автоматически превращаются в встроенные функции. | Макросы должны быть определены специально. |
Доступ к | Встроенная функция-член может получить доступ к данным-членам класса. | Макросы никогда не могут быть членами класса и не могут получить доступ к данным членов класса. |
прекращение | Определение встроенной функции заканчивается фигурными скобками в конце встроенной функции. | Определение макроса заканчивается новой строкой. |
Отладка | Отладка проста для встроенной функции, поскольку проверка ошибок выполняется во время компиляции. | Отладка становится трудной для макросов, поскольку проверка ошибок не происходит во время компиляции. |
переплет | Встроенная функция очень хорошо связывает все операторы в теле функции, так как тело функции начинается и заканчивается фигурными скобками. | Макрос сталкивается с проблемой связывания, если он имеет более одного оператора, так как у него нет символа завершения. |
Определение Inline
Встроенная функция выглядит как обычная функция, но ей предшествует ключевое слово «в линию«. Встроенные функции - это короткие функции, которые раскрываются в точке их вызова вместо вызова. Давайте разберем встроенные функции на примере.
#включают В приведенной выше программе я объявил и определил функцию initialize () как встроенную функцию в классе «example». Код функции initialization () расширится там, где он вызывается объектом класса «example». Функция display (), определенная в примере класса, не объявлена inline, но может считаться встроенной компилятором, так как в C ++ функция, определенная внутри класса, автоматически становится встроенной компилятором с учетом длины функции. Макрос - это «директива препроцессора». Перед компиляцией программа проверяется препроцессором, и, где бы он ни находил макрос в программе, он заменяет этот макрос своим определением. Следовательно, макрос рассматривается как «замена». Давайте изучим макрос на примере. #включают В приведенном выше коде я объявил макрос-функцию GREATER (), которая сравнивает и находит большее число обоих параметров. Вы можете заметить, что нет точки с запятой для завершения макроса, так как макрос завершается только новой строкой. Поскольку макрос является просто заменой, он расширяет код макроса, в котором он вызывается. Встроенные функции гораздо более убедительны, чем макрофункции. C ++ также предоставляет лучший способ определения константы, который использует ключевое слово «const».
Определение макроса
Выводы: