Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
mkostoevr
Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 370
Записей в блоге: 2
#1

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

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

Здравия всем!

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

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

ЗЫ: Касается ли это компилятора MinGW? Просто я с С++ не на VS работаю.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2017, 17:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос По какой причине компилятор может не заинлайнить функцию? (C++):

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

Какой компилятор поддерживает С++ 11?
Привет! Какой-нибудь компилятор реализует уже стандарт С++ 11?

Какой компилятор выбрать
Пишу диплом... Мне надо в документации указать почему я выбрал именно язык с++,...

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

Какой использовать компилятор С++ ?
В общем нашёл код: #include <iostream> #include "stdafx.h" int main() {...

какой компилятор посоветуете
Сел изучать С по книге Б.Керниган и Д.Ритчи "Язык прогр. Си", програмные...

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

Решение

Цитата Сообщение от mkostoevr Посмотреть сообщение
может функцию и не заинланить?
Не может, если сделать правильно:
https://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Function-Attributes.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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2017, 18:01
Привет! Вот еще темы с решениями:

Какой компилятор использовать
Привет. начал изучать С++. из книги Книги "Язык программирования С++. Бьерн...

Какой компилятор C++ выбрать?
Какой компилятор C++ сейчас наиболее популярный под Windows? Имеется ввиду...

Какой компилятор использовать?
читаю Страуструпа практика С++,половина программ выдают ошибки,глава с графикой...

Какой компилятор лучший
Здравствуйте, дорогие форумчане! Начинаю учебу c++ какие литературы читать и...


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

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

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