Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Что такое inline функция ? |
Автор: Wowa 14.12.2004, 14:30 |
Что такое inline функция ? И какая мне разница inline она или нет? |
Автор: srd 14.12.2004, 14:41 | ||||
inline-функция - это функция с модификатором ilnline, код которой компилятор может встроить в место вызова функции. Например
Компилятор может встроить код функции, примерно так:
Т.к. вызов функции требует некоторых накладных расходов, то inline-функции могут увеличить эффективность, но приводят к увеличению кода. inline - это только рекомендация, компилятор сам решает, может он встроить функцию или нет. Сложные функции с операторами ветвления, циклов и т.п. вполне могут быть не встроены. Например, если определение inline-функции расположено в заголовочном файле, и компилятор не сможет её встроить, то проект скомпилируется, но в каждом модуле, включающем этот заголовок, будет своя копия функции ![]() |
Автор: cardinal 14.12.2004, 19:07 | ||
То есть можнп сказать: Быбирай - быстродействие или компактность. Если программа для pc то обычно выбирают первое, а вот если у тебя какая нибудь embedded system с ROM'ом в 32 Кб, то тут иногда не до быстродействия ![]() |
Автор: mr.DUDA 14.12.2004, 23:29 |
З.Ы. от себя хотел бы добавить, что "накладные расходы на вызов ф-ции" - не пустой звук ! Например, ф-ция которая вычисляет Max из двух-трёх значений, в inline-варианте будет работать на 10-25% быстрее, т.к. не-inline функция потребует создания кадра стека и сопутствующих действий (пролог-эпилог), а inline - "прозрачно", т.е. прямо в коде текущей функции выполнит все свои действия. |
Автор: [ss]3L33T@ 15.12.2004, 05:43 |
+к теме: __inline __forceinline см. MSDN |