Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
#1

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

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

Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле? Функции в одну строчку, сразу в ретарне вычисляет возвращаемое значение.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.07.2014, 12:11
Ответы с готовыми решениями:

Одномерные Массивы. Решение уже есть. Переделать через функции.
Помогите решить задачу по одномерному массиву ПО ФУНКЦИЯМ. Задачи уже решены,...

Перенести в dll код игры в котором уже есть классы и функции
кАк запехать в dll этот код игры, в которой уже есть Классы и функции ?...

Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму
Определить, есть ли в заданном предложении цифры. И если есть, найти их сумму.

Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них.
Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести...

Узнать, есть ли среди элементов массива элементы с нечетными номерами, которые кратны 17, и если есть, посчитать их сумму
Проблема с заданием. Дан одномерный массив. Узнать, есть ли среди них элементы...

12
SatanaXIII
Супер-модератор
Эксперт С++
5769 / 2767 / 375
Регистрация: 01.11.2011
Сообщений: 6,726
Завершенные тесты: 1
29.07.2014, 12:17 #2
"Помечайте все, компилятор отсортирует."
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 12:18  [ТС] #3
Как-то расплывчато.
0
Toshkarik
1149 / 866 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
29.07.2014, 12:22 #4
Как inline она должна быть определенна в той же единице трансляции, в которой эта функция используется. Поэтому их обычно определяют сразу в заголовках ( в .h файлах ).
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
29.07.2014, 12:23 #5
Цитата Сообщение от m0 Посмотреть сообщение
Есть ли смысл помечать функции как inline, если их прототип уже есть в .h файле?
нет. для того чтобы функция стала кандидатом на подстановку она должны быть помечена как inline, а inline функции должны быть включены в каждую единицу трансляции в которой используются т.е. и тело функции должно быть в хедере
1
CheshireCat
Эксперт С++
2910 / 1259 / 114
Регистрация: 27.05.2008
Сообщений: 3,460
29.07.2014, 12:24 #6
inline - это всего лишь нижайшая просьба к компилятору: "Будьте добры, если это не затруднит, заинлайньте эту функцию." Компилятор может эту просьбу выполнить, а может - нет. Как карта ляжет.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 12:44  [ТС] #7
Т.е. все которые я хочу пометить как инлайн, нужно описывать реализацию в там где и прототип?
0
SatanaXIII
Супер-модератор
Эксперт С++
5769 / 2767 / 375
Регистрация: 01.11.2011
Сообщений: 6,726
Завершенные тесты: 1
29.07.2014, 12:46 #8
Цитата Сообщение от m0 Посмотреть сообщение
Т.е. все которые я хочу пометить как инлайн, нужно описывать реализацию в там где и прототип?
Да. А именно в хедер. Но и это не даст вам сто процентной гарантии.
1
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 13:08  [ТС] #9
А уже непосредственно в реализации помечать как инлайн?
0
SatanaXIII
Супер-модератор
Эксперт С++
5769 / 2767 / 375
Регистрация: 01.11.2011
Сообщений: 6,726
Завершенные тесты: 1
29.07.2014, 13:12 #10
Лучший ответ Сообщение было отмечено m0 как решение

Решение

Цитата Сообщение от m0 Посмотреть сообщение
А уже непосредственно в реализации помечать как инлайн?
Конечно. Реализация-то уже будет в хедере.
У вас только в .h будет функция, вся абсолютна, вместе с реализацией. А в .cpp не будет вообще ничего к ней относящегося.
0
m0
2 / 2 / 1
Регистрация: 03.12.2013
Сообщений: 145
29.07.2014, 13:13  [ТС] #11
SatanaXIII, Окей, я так и делаю.
0
CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 858
Записей в блоге: 1
29.07.2014, 19:42 #12
Некто Герб Саттер говорит, что помечать функции как inline - полнейшая дурь. Примерно такая же, как auto и register. Вы ну вот прям совсем никак, даже ключами компиляции, не заставите компилятор заинлайнить вызов. Как было сказано, это что-то типа нижайшей просьбы, которую стандартом разрешено полностью игнорировать. Компилятор злобно хохочет и потирает лапы.
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
29.07.2014, 22:47 #13
Если речь идёт о языке программирования C++, то ключевое слово inline несёт в себе гораздо больший смысл, чем нижайшая просьба компилятору: http://www.cyberforum.ru/blogs/18334/blog93.html

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

Добавлено через 45 секунд
А... SatanaXIII уже всё объяснил, не заметил сразу
0
29.07.2014, 22:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2014, 22:47

Определить, есть ли такая фирма, у которой все 5 лет наблюдался рост производства и, если есть, то каков её номер
Имеется таблица с данными об объёме производства 10 фирм за 5 лет. Определить,...

Как узнать, есть ли уже С++ в этом ноутбуке?
Как узнать, есть ли уже С++ в этом ноутбуке? И где?

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


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

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

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