Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
#1

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? - C++

29.07.2014, 12:11. Просмотров 584. Ответов 12
Метки нет (Все метки)

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? Функции в одну строчку, сразу в ретарне вычисляет возвращаемое значение.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2014, 12:11     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
Посмотрите здесь:
Одномерные Массивы. Решение уже есть. Переделать через функции. C++
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму C++
C++ Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них.
Определить, есть ли такая фирма, у которой все 5 лет наблюдался рост производства и, если есть, то каков её номер C++
C++ Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму
Как узнать, есть ли уже С++ в этом ноутбуке? C++
C++ Если в файле с новой строки есть 5 пробелов - заменить их на новый абзац, отделяющийся пустой строкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
29.07.2014, 12:17     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #2
"Помечайте все, компилятор отсортирует."
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 12:18  [ТС]     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #3
Как-то расплывчато.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
29.07.2014, 12:22     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #4
Как inline она должна быть определенна в той же единице трансляции, в которой эта функция используется. Поэтому их обычно определяют сразу в заголовках ( в .h файлах ).
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.07.2014, 12:23     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #5
Цитата Сообщение от m0 Посмотреть сообщение
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
нет. для того чтобы функция стала кандидатом на подстановку она должны быть помечена как inline, а inline функции должны быть включены в каждую единицу трансляции в которой используются т.е. и тело функции должно быть в хедере
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,364
29.07.2014, 12:24     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #6
inline - это всего лишь нижайшая просьба к компилятору: "Будьте добры, если это не затруднит, заинлайньте эту функцию." Компилятор может эту просьбу выполнить, а может - нет. Как карта ляжет.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 12:44  [ТС]     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #7
Т.е. все которые я хочу пометить как инлайн, нужно описывать реализацию в там где и прототип?
SatanaXIII
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
29.07.2014, 12:46     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #8
Цитата Сообщение от m0 Посмотреть сообщение
Т.е. все которые я хочу пометить как инлайн, нужно описывать реализацию в там где и прототип?
Да. А именно в хедер. Но и это не даст вам сто процентной гарантии.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 13:08  [ТС]     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #9
А уже непосредственно в реализации помечать как инлайн?
SatanaXIII
Супер-модератор
Эксперт С++
5603 / 2637 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
29.07.2014, 13:12     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от m0 Посмотреть сообщение
А уже непосредственно в реализации помечать как инлайн?
Конечно. Реализация-то уже будет в хедере.
У вас только в .h будет функция, вся абсолютна, вместе с реализацией. А в .cpp не будет вообще ничего к ней относящегося.
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 13:13  [ТС]     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #11
SatanaXIII, Окей, я так и делаю.
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 19:42     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #12
Некто Герб Саттер говорит, что помечать функции как inline - полнейшая дурь. Примерно такая же, как auto и register. Вы ну вот прям совсем никак, даже ключами компиляции, не заставите компилятор заинлайнить вызов. Как было сказано, это что-то типа нижайшей просьбы, которую стандартом разрешено полностью игнорировать. Компилятор злобно хохочет и потирает лапы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2014, 22:47     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
Еще ссылки по теме:
C++ Дает ли register прирост в скорости? И есть ли толк в inline?
Как можно записывать в существующие файл, в котором уже есть информация? C++
Есть метод класса внутри , есть проверка. Если условие сходится то метод должен выдать указатель, иначе булевую переменную C++
Есть ли смысл в изучении C++ C++
Есть ли смысл в блоках? C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17545 / 5783 / 370
Регистрация: 30.03.2009
Сообщений: 15,930
Записей в блоге: 26
29.07.2014, 22:47     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? #13
Если речь идёт о языке программирования C++, то ключевое слово inline несёт в себе гораздо больший смысл, чем нижайшая просьба компилятору: http://www.cyberforum.ru/blogs/18334/blog93.html

Современные компиляторы давно стали настолько продвинуты, что в контексте нижайшей просьбы им модификатор inline не нужен - они сами разберутся, чего надо инлайнить, а чего нет. Но вот с точки зрения концепции Си++ правильно было бы inline-функцию целиком (т.е. вместе с телом) помещать вовнутрь файла *.h и не иметь никакой реализации в *.cpp

Добавлено через 45 секунд
А... SatanaXIII уже всё объяснил, не заметил сразу
Yandex
Объявления
29.07.2014, 22:47     Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
Ответ Создать тему
Опции темы

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