Встроенные функции и макрос - это функции, используемые в компьютерном программировании на 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 ++. Он может получить доступ ко всем членам класса, а также его легко отлаживать. Хотя он не так широко используется, как макросы. Действительно, в соревновательном программировании он не используется.
Макросы широко используются. Он используется в контексте и может быть расширен независимо от того, что они синтаксически правильны. Отлаживать непросто. И он определяется в начале программы и может заканчиваться новой строкой.