Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932

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

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

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

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

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

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

3
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
17.06.2012, 15:43
Спецификатор inline как раз-таки намекает компилятору, что было бы неплохо вставить код из тела этой функции вместо вызова, но это просто рекомендация и, если он считает иначе, то может собрать и обычную функцию.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В случае встраивания могут использоваться переменные непосредственно из вызывающей функции, а так всё в том же стеке/регистрах.
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.06.2012, 15:45
Hagrael, inline функции работают точно также как и обычные, ни быстрее ни медленнее. Преимущество их в том, что они могут быть подставлены в место вызова, что сэкономит время на вызов функции, но увеличит размер генерируемого кода.
Цитата Сообщение от Hagrael Посмотреть сообщение
Но как я понимаю, inline функции все равно работают медленнее, чем их инструкции, вставленные на место их вызова. Так ли это?
Ничего не понял.
Цитата Сообщение от Hagrael Посмотреть сообщение
И каким образом создаются локальные переменные inline функций, ведь в стеке нового блока при их вызове не создается?
В месте вызова подставляется тело функции, со всеми потрохами, а затем уже генерится код. Считайте, что в месте вызова просто подставляется текст функции, вот и все.
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
18.06.2012, 07:45  [ТС]
Все понял, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.06.2012, 07:45
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru