Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Hagrael
БТР - мой друг
 Аватар для Hagrael
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
#1

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

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

Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные, то их лучше делать inline функциями, т. к. inline функции быстрее обычных. Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это? И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2012, 15:17     inline функции vs инструкции inline функций
Посмотрите здесь:

inline функции C++
Inline функции C++
C++ Inline функции.
inline функции C++
C++ inline - функции
C++ inline функции
C++ Использование inline функций
C++ Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Схож ли по принципу механизм использования inline функций и макросов? C++
C++ Inline функции
Экспортирование inline-функций в MinGW компиляторе C++
Inline функции в классах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,108
17.06.2012, 15:43     inline функции vs инструкции inline функций #2
Спецификатор inline как раз-таки намекает компилятору, что было бы неплохо вставить код из тела этой функции вместо вызова, но это просто рекомендация и, если он считает иначе, то может собрать и обычную функцию.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В случае встраивания могут использоваться переменные непосредственно из вызывающей функции, а так всё в том же стеке/регистрах.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.06.2012, 15:45     inline функции vs инструкции inline функций #3
Hagrael, inline функции работают точно также как и обычные, ни быстрее ни медленнее. Преимущество их в том, что они могут быть подставлены в место вызова, что сэкономит время на вызов функции, но увеличит размер генерируемого кода.
Цитата Сообщение от Hagrael Посмотреть сообщение
Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это?
Ничего не понял.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В месте вызова подставляется тело функции, со всеми потрохами, а затем уже генерится код. Считайте, что в месте вызова просто подставляется текст функции, вот и все.
Hagrael
БТР - мой друг
 Аватар для Hagrael
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
18.06.2012, 07:45  [ТС]     inline функции vs инструкции inline функций #4
Все понял, спасибо!
Yandex
Объявления
18.06.2012, 07:45     inline функции vs инструкции inline функций
Ответ Создать тему
Опции темы

Текущее время: 10:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru