Разница между встроенным и макросом (с таблицей)

Оглавление:

Anonim

Встроенные функции и макрос - это функции, используемые в компьютерном программировании на C ++ и C. В основном используется встроенная функция, а не макрос. Макросы почти всегда не нужны в языке C ++, поскольку они подвержены ошибкам, они не могут получить доступ к закрытым членам класса. Обе функции могут выглядеть одинаково, но это определенно не так. Обе функции имеют свои преимущества и недостатки.

Встроенный против макроса

Основное различие между встроенной функцией и макрос-функцией заключается в том, что встроенная функция - это короткая функция, которая анализируется компилятором, в то время как, с другой стороны, макрос раскрывается препроцессором. Действительно, встроенный может получить доступ к членам класса, в то время как функция макроса не может получить доступ к членам класса.

Встроенный - это нормальная функция. Функция определяется ключевым словом inline. Он может легко получить доступ к членам класса. Это улучшает функцию. Действительно, пользоваться им просто. Он используется в языке программирования C ++. В основном он определяется внутри или вне класса и заканчивается символом фигурной скобки.

Макрос определяется ключевым словом #define. Он почти не используется в C ++, больше используется в языке C. Они более гибкие, но подвержены ошибкам. И макрос раскрывается, когда обработка программы выполняется препроцессором. Макрос не может получить доступ к членам класса.

Таблица сравнения встроенного и макроса

Параметры сравнения

В линию

Макрос

Определение

Inline - это обычная функция, используемая в языке C ++, определяемая ключевым словом «Inline». Макрос - это функция, используемая в основном на языке C, которая определяется ключевым словом «#define».
Доступ членов класса

Может легко получить доступ к членам класса. Нет доступа к членам класса.
Отлажено

Программа легко поддается отладке. Программа не поддается легкой отладке.
Где определять?

Либо внутри, либо вне класса. В начале программы.
Прекращение

Он заканчивается символом, фигурной скобкой на конце. Он заканчивается новой строкой, а не символом.

Что такое встроенный?

Inline - это обычная функция, которая используется в языке программирования C ++. Он определяется ключевым словом inline. Это короткая функция, которая расширяется путем компиляции. Inline - это не команда, это скорее запрос.

Функция может быть определена как внутри, так и вне класса. И может заканчиваться символом фигурной скобки. При использовании встроенной функции во время компиляции весь код встроенной функции вставляется или заменяется. Это делается в момент вызова встроенной функции компилятором C ++. Кроме того, он может легко получить доступ ко всем членам класса.

Преимущество встроенной функции в том, что не возникает дополнительных затрат на вызов функции. Когда функция вызывается, она экономит накладные расходы на переменные push / pop в стеке, а также сохраняет накладные расходы на возвратный вызов из функции.

Аргументы в случае встроенной функции оцениваются только один раз, и необходимые преобразования представлены правильно. Эта функция широко не используется, в основном она используется в языке C ++, но не требуется в соревновательном программировании. Хотя он безопасен и прост в использовании.

Что такое Micro?

Макрос расширяется препроцессором в программе, поэтому его также называют директивой препроцессора. Эта функция определяется ключевым словом «#define». Препроцессор проверяет программу перед компиляцией. Он заменяет все вызовы макросов непосредственно в коде макроса определением макроса. Инструкция расширяется в момент ее вызова во время обработки. Он очень гибкий.

Макросы можно расширять независимо от того, что они синтаксически корректны. Из-за проблем с расширением макроса этап компиляции макрос-функции приведет к ошибкам отчета. Он определяется в самом начале программы и может быть завершен новой строкой. Преимущество макроса заключается в том, что аргументы макроса оцениваются каждый раз, когда в программе используется функция макроса.

Макросы не могут получить доступ к членам класса, что является недостатком. И это не может быть легко отлажено. В самом деле, это может вызвать некоторые побочные эффекты из-за расширения, поскольку входные выражения копируются везде, где они появляются в шаблоне. Макро-функция не так полезна, как встроенная, тем не менее, она широко используется в соревновательном программировании. В основном он используется в программировании на C, а не в C ++. Это похоже на вызов функции, но это не так.

Основные различия между встроенным и макросом

Вывод

Встроенная функция более безопасна и проста в использовании, поэтому она постоянно используется в программировании на языке C ++. Он может получить доступ ко всем членам класса, а также его легко отлаживать. Хотя он не так широко используется, как макросы. Действительно, в соревновательном программировании он не используется.

Макросы широко используются. Он используется в контексте и может быть расширен независимо от того, что они синтаксически правильны. Отлаживать непросто. И он определяется в начале программы и может заканчиваться новой строкой.

Разница между встроенным и макросом (с таблицей)