Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2
1

По какой причине компилятор может не заинлайнить функцию?

19.06.2017, 17:46. Показов 1336. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравия всем!

В общем, прочёл я тут одну тему, и нашёл кое-что интересное:

Цитата Сообщение от CheshireCat Посмотреть сообщение
Обрати внимание только, что inline - это не приказ, а нижайшая просьба к компилятору: "Милостивый государь, будьте так любезны, попытайтесь заинлайнить эту функцию, пожалуйста." - каковую просьбу компилятор может выполнить, а может и проигнорировать. Поэтому рассчитывать на то, что функция будет обязательно заинлайнена, нельзя.
... То есть, компиллер может функцию и не заинланить? Почему? Так быстрее?

ЗЫ: Касается ли это компилятора MinGW? Просто я с С++ не на VS работаю.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2017, 17:46
Ответы с готовыми решениями:

По какой причине динамическая переменная может вычисляться неверно?
Подскажите, пожалуйста, по какой причине значение динамической переменной вычисляется как 0, если...

По какой причине Windows XP может сбросить настройки созданного пользователя?
Есть вопрос: по какой причине windows xp может сбросить настройки созданного пользователя?...

Клиент-сервер: По какой причине сокет может отказываться отсылать пакеты
Дано: сервер на C#, клиент на AS3 (хотя, думаю, это не имеет значения). Сервер принимает соединения...

По какой причине приложение может застопорится при вызове функции Stream.Read?
По какой причине приложение может застопорится при вызове функции Stream.Read? Т.е. не выдает...

2
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2017, 17:49 2
Цитата Сообщение от mkostoevr Посмотреть сообщение
Почему?
Потому что так сложились звёзды.
Потому что проанализировав контекст, компилятор пришёл к выводу, что лучше не инлайнить.
Более того, в одном контексте компилятор может функцию заинлайнить, в другом нет.
Вам лучше не заморачиваться по этому поводу, компиляторы сейчас достаточно взрослые ребята, чтобы сами решать что им и куда вставлять.
Хотите подробней рассмотреть данный вопрос - почитайте Саттера, "Новые сложные задачки на С++", он там всё в деталях описывает.
1
0 / 0 / 2
Регистрация: 19.06.2017
Сообщений: 28
19.06.2017, 18:01 3
Лучший ответ Сообщение было отмечено mkostoevr как решение

Решение

Цитата Сообщение от mkostoevr Посмотреть сообщение
может функцию и не заинланить?
Не может, если сделать правильно:
https://gcc.gnu.org/onlinedocs... butes.html
always_inline
Generally, functions are not inlined unless optimization is specified. For functions declared inline, this attribute inlines the function even if no optimization level was specified.
0
19.06.2017, 18:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2017, 18:01
Помогаю со студенческими работами здесь

Какой компилятор может воспроизводить звук?
Нужен компилятор, который может не только показывать последствия написания когда, но и озвучивать....

По какой-то причине не работает функция
Доброго времени суток, уважаемый форум. #include <iostream> using namespace std; class...

По какой причине это происходит
Прошу помочь в чем дела без стебов, происходит только в гта 5 лицензия не ужели карте хана?...

Может ли компьютер выключаться по причине просадки напряжения на 5v и 12v ?
Здравствуйте! Пожалуйста, помогите разобраться. Может по этой причине отключаться компьютер каждые...

По какой причине не работает регулярное выражение ?
procedure TForm1.Button1Click(Sender: TObject); var rege:tregexpr; begin ...

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru