Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

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

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

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

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

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

3
NoMasters
Псевдослучайный
1899 / 1110 / 74
Регистрация: 13.09.2011
Сообщений: 3,159
17.06.2012, 15:43 #2
Спецификатор inline как раз-таки намекает компилятору, что было бы неплохо вставить код из тела этой функции вместо вызова, но это просто рекомендация и, если он считает иначе, то может собрать и обычную функцию.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В случае встраивания могут использоваться переменные непосредственно из вызывающей функции, а так всё в том же стеке/регистрах.
1
CyBOSSeR
Эксперт С++
2307 / 1680 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
17.06.2012, 15:45 #3
Hagrael, inline функции работают точно также как и обычные, ни быстрее ни медленнее. Преимущество их в том, что они могут быть подставлены в место вызова, что сэкономит время на вызов функции, но увеличит размер генерируемого кода.
Цитата Сообщение от Hagrael Посмотреть сообщение
Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это?
Ничего не понял.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В месте вызова подставляется тело функции, со всеми потрохами, а затем уже генерится код. Считайте, что в месте вызова просто подставляется текст функции, вот и все.
1
Hagrael
БТР - мой друг
331 / 273 / 2
Регистрация: 07.01.2010
Сообщений: 1,932
18.06.2012, 07:45  [ТС] #4
Все понял, спасибо!
0
18.06.2012, 07:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2012, 07:45
Привет! Вот еще темы с ответами:

inline - функции - C++
Стоит-ли добавлять префикс inline ко всем функциям, состоящим из 1-2 строк?

inline функции - C++
Добрый вечер. Хотелось бы узнать, есть ли минусы у inline функций кроме увеличения размера файла? Везде пишут что использование "жирных"...

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

Inline функции - C++
Здарова всем! А может кто-нибудь объяснить товарищу внятно, для чего нужны inline-функции? Вроде говорят, что их объявлять нужно до...


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

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

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