Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
БТР - мой друг
332 / 276 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
1

inline функции vs инструкции inline функций

17.06.2012, 15:17. Просмотров 1917. Ответов 3
Метки нет (Все метки)


Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т. к. inline функции быстрее обычных. Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это? И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2012, 15:17
Ответы с готовыми решениями:

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она...

Использование inline функций
Нам задали написать программу по условию: Написать программу с использованием подставляемых функций...

Экспортирование inline-функций в MinGW компиляторе
Здравствуйте. Как заставить MinGW компилятор (в моем случае MinGW 4.9.2 x32) экспортировать...

Схож ли по принципу механизм использования inline функций и макросов?
сабж ясен из заголовка

3
Псевдослучайный
1936 / 1137 / 96
Регистрация: 13.09.2011
Сообщений: 3,205
17.06.2012, 15:43 2
Спецификатор inline как раз-таки намекает компилятору, что было бы неплохо вставить код из тела этой функции вместо вызова, но это просто рекомендация и, если он считает иначе, то может собрать и обычную функцию.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В случае встраивания могут использоваться переменные непосредственно из вызывающей функции, а так всё в том же стеке/регистрах.
1
Эксперт С++
2333 / 1706 / 148
Регистрация: 06.03.2009
Сообщений: 3,675
17.06.2012, 15:45 3
Hagrael, inline функции работают точно также как и обычные, ни быстрее ни медленнее. Преимущество их в том, что они могут быть подставлены в место вызова, что сэкономит время на вызов функции, но увеличит размер генерируемого кода.
Цитата Сообщение от Hagrael Посмотреть сообщение
Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это?
Ничего не понял.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В месте вызова подставляется тело функции, со всеми потрохами, а затем уже генерится код. Считайте, что в месте вызова просто подставляется текст функции, вот и все.
1
БТР - мой друг
332 / 276 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
18.06.2012, 07:45  [ТС] 4
Все понял, спасибо!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2012, 07:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Inline функции.
Здравствуйте. Скажите пожалуйста, объявление функции как inline нужно делать как в прототипе так и...

inline функции
Объясните, пожалуйста, почему со всеми inline программа не работает, а если их закомментировать -...

Inline функции
Друзья!Инлайн функции могу быть определены только внтури класса?Или могут быть определены вне...

inline функции
Добрый вечер. Хотелось бы узнать, есть ли минусы у inline функций кроме увеличения размера файла?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.