Разница между встроенной и обычной функцией в С++

Опубликовано: 14 Сентября, 2022

Встроенная функция — это функция, которая расширяется компилятором при ее вызове. Во время вызова функции выполняется множество служебных задач, таких как сохранение регистров, помещение аргументов в стек и возврат к вызывающей функции. Эти накладные расходы отнимают много времени и неэффективны для функций небольшого размера. В C++ для решения этих накладных расходов используется встроенная функция. Он расширяется в соответствии с компилятор при его вызове, что позволяет избежать накладных расходов. Ключевое слово, известное как « inline » , используется перед объявление функции.

Синтаксис:

inline return_type function_name(parameters) 
{
// Insert your Function code here
}

Пример:

Теперь остановимся на следующей функции. Судя по названию, Normal Function — это, по сути, обычная функция в C++. Это способствует повторному использованию кода и делает программу модульной. Во время вызовов функций выполняется множество служебных задач, таких как сохранение регистров, помещение аргументов в стек и возврат к вызывающей функции.

Синтаксис:

return_type_name function_name( parameters) 
{ 
 // Insert your Function code here 
}

Пример:

Разница между встроенной функцией и нормальной функцией в С++

С.№

Встроенная функция

Нормальная функция

1. Он расширяется встроенным при вызове. Это функция, обеспечивающая модульность программы.
2. Обычно используется для увеличения времени выполнения программы. Обычно он используется для улучшения возможности повторного использования кода и упрощения его сопровождения.
3. В основном это функция, которая используется, когда функции маленькие и вызываются очень часто. По сути, это группа операторов, выполняющих определенную задачу. Он используется, когда функции большие.
4. В его объявлении требуется ключевое слово ' inline ' . Он не требует никакого ключевого слова в своем объявлении.
5. Обычно он выполняется намного быстрее по сравнению с обычными функциями. Обычно он выполняется медленнее, чем встроенная функция для функции небольшого размера.
6. При этом корпус функций копируется в каждый контекст, где он используется, что, в свою очередь, сокращает время поиска тела в запоминающем устройстве или на жестком диске. При этом тело функции хранится на запоминающем устройстве, и когда эта конкретная функция вызывается каждый раз, ЦП должен загрузить тело с жесткого диска в ОЗУ для выполнения.
7. Компилятор всегда размещает копию кода этой функции в каждой точке, где функция вызывается во время компиляции. Он не обеспечивает такой тип функциональности.
8. Обычно он включает только 2–3-строчные коды. Когда количество строковых кодов очень велико, т. е. обычные функции содержат столько кода, сколько необходимо.
9. Это немного сложнее понять и протестировать по сравнению с обычным функционированием. Это гораздо проще понять и протестировать по сравнению со встроенной функцией.
10. Функции, присутствующие внутри класса, неявно встроены. Функции, присутствующие вне класса, считаются нормальными функциями.
11. Слишком много встроенных функций влияют на размер файла после компиляции, так как дублируют один и тот же код. Слишком много обычных функций не влияют на размер файла после компиляции.