powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / не могу понять принцип inline функций...
12 сообщений из 12, страница 1 из 1
не могу понять принцип inline функций...
    #33276717
ромка_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите как с ними работают и в конце концов в чем же принцип зачем нужнен этот inline
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33276921
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ромка_подскажите как с ними работают и в конце концов в чем же принцип зачем нужнен этот inline

Это код, оформленный в ввиде метода, при возможности вставляеться компилятором на место вызова данного метода. Если хотите оптимизация по скорости, или нечто аналогичное макроопределениям в азме...

с уважением
(круглый)
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33276934
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не обязательное для исполнения компилятором
Не может быть рекурсивной
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33276986
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
inline функции пришли на смену функциональным макросам, но в отличие от макросов на усмотрении комплилятора остается помещать тело функции в место вызова или нет:

Код: plaintext
1.
2.
3.
4.
// в С
#define mul(a, b) ((a)*(b))

// в С++
inline double mul(double a, double b) {return a*b;}

Как видно из назначения, inline функции значительно повышают быстродействие системы, но за "удовольствие" мы расплачиваемся размером исполняемого файла.
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33277090
Хитрый Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ромка_подскажите как с ними работают и в конце концов в чем же принцип зачем нужнен этот inline
Ну, блин, представь, что тебе надо купить батон.
Ты пойдешь покупать его в ближайший магазин, а не поедешь за ним в другой город )) То же самое и с inline!

PS: Однако, Страуструпп говорит, что использование inline не желательно!
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33277406
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Хитрый Мух

авторPS: Однако, Страуструпп говорит, что использование inline не желательно!

А вот с этого момента поподробнее. Прежде чем какую-либо глупость приписывать уважаемому человеку для начала надо хотя бы дать ссылку где и когда это говорил Страуструп - возможно вы упустили контекст.
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33277496
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков2 Хитрый Мух

авторPS: Однако, Страуструпп говорит, что использование inline не желательно!

А вот с этого момента поподробнее. Прежде чем какую-либо глупость приписывать уважаемому человеку для начала надо хотя бы дать ссылку где и когда это говорил Страуструп - возможно вы упустили контекст.
Ну в общем Саттер тоже не рекоммендует использовать inline, как и любые другие подсказки для компилятора.
Ситуация тут напоминает ситуацию с хинтами в запросах - классики не рекоммендуют, люди практические смотрят на результаты работы профайлера, разбираются с тем что нагенерил компилятор и ставят inline где надо.
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33277532
Хитрый Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков2 Хитрый Мух

авторPS: Однако, Страуструпп говорит, что использование inline не желательно!

А вот с этого момента поподробнее. Прежде чем какую-либо глупость приписывать уважаемому человеку для начала надо хотя бы дать ссылку где и когда это говорил Страуструп - возможно вы упустили контекст.

Вот выдержки из книги "Введение в язык С++", Бьярн Страустрап, 1995 г.(У меня электронный вариант с CITForum'а, поэтому не могу ничего сказать об издательстве):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
[color=red][SIZE= 3 ]Правила Правой Руки[/SIZE].[/color]
Здесь приводится набор правил, которых вам хорошо бы придерживаться изучая C++. Когда вы станете более опытны, вы можете превратить их в то, что будет подходить для вашего рода деятельности и вашего стиля программирования. Они умышленно сделаны очень простыми, поэтому подробности в них опущены. Не воспринимайте их чересчур буквально. Написание хороших программ требует ума, вкуса и терпения. Вы не собираетесь как следует понять это с самого начала; поэкспериментируйте! 
[ 1 ] Когда вы программируете, вы создаете конкретное представление идей вашего решения некоторой задачи. Пусть структура отражает эти идеи настолько явно, насколько это возможно: 
[a] Если вы считайте "это" отдельным понятием, сделайте его классом. 
 Если вы считайте "это" отдельным объектом, сделайте его объектом некоторого класса. 
[c] Если два класса имеют общим нечто существенное, сделайте его базовым классом. Почти все классы в вашей программе будут иметь нечто общее; заведите (почти) универсальный базовый класс, и разработайте его наиболее тщательно. 
[ [b]2 ] Когда вы определяете класс, который не реализует некоторый математический объект, вроде матрицы или комплексного числа, или тип низкого уровня, вроде связанного списка, то: 
[a] Не используйте глобальные данные. 
 Не используйте глобальные функции (не члены). 
[c] Не используйте открытые данные-члены. 
[d] Не используйте друзей, кроме как чтобы избежать [a], [b] или [c]. 
[e] Не обращайтесь к данным-членам или другим объектам непосредственно. 
[f] Не помещайте в класс "поле типа"; используйте виртуальные функции. 
[g] Не используйте inline-функции, кроме как средство существенной оптимизации. 

Однако там же в замечаниях для программистов на С:
Код: plaintext
Макросы (#define) в C++ почти никогда не бывают необходимы; чтобы определять провозглашаемые константы, используйте const или enum, и [SIZE= [b]2 ][color=red]inline - чтобы избежать лишних расходов на вызов функции[/color][/SIZE]. 
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33277841
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков2 Хитрый Мух

авторPS: Однако, Страуструпп говорит, что использование inline не желательно!

А вот с этого момента поподробнее. Прежде чем какую-либо глупость приписывать уважаемому человеку для начала надо хотя бы дать ссылку где и когда это говорил Страуструп - возможно вы упустили контекст.

За Страуструпа не поручусь, а вот Саттер совершенно точно не советует.
И совершенно справедливо, любые хинты зло, но иногда очень полезное.
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33279923
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дао:

1) В руках мастера даже зло может быть добром.
2) В руках ламера зло всегда будет злом и добро часто тоже.

Вопрос: когда я пишу внутри класса определение функции вместе с ее реализацией, то по стандарту компилятор должен понимать ее как inline. Так вот, это хинт, директива или еще что-то?

________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33279969
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это еще одно Дао.

Что такое хинт, директива?
Inline вообще-то всегда только рекомендация компилятору. MS-овский например на нее просто плюет, если как следует не отстроить параметры компилятора. А в DEBUG-сборке их вообще нет.
...
Рейтинг: 0 / 0
не могу понять принцип inline функций...
    #33280095
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Не используйте inline-функции, кроме как средство существенной оптимизации. 


Между "Не используйте" и "не используйте ..., кроме как" огромная разница.

Другое дело, что inline не является директивой и влиять на процесс "встройки" программист не в силах, но то, что inline спецификатор не надо использовать из этого еще не следует.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / не могу понять принцип inline функций...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]