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

подставляемые функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
05.09.2011, 20:03     подставляемые функции #1
Для этого кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
inline void f()
{
    std :: cout << "Inline function.\n";
}
 
int main()
{
    f();
    std :: cin.get();
    return 0;
}
посмотрел в Visual Studio дизассемблированный код.
Assembler
1
2
3
          f();
0014149E  call        f (141127h) 
          std :: cin.get();
почему осуществляется вызов функции f? или я что-то не так понял?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2011, 20:03     подставляемые функции
Посмотрите здесь:

C++ определение функции в ЗАГОЛОВОЧНОМ файле. В основном предполагается переопределение ТЕЛА этой функции. Как это сделать, не правя хидер?
C++ Не работают функции <math.h> в методе (функции-члене)
Классы. Программирование алгоритмов с использованием конструктора, деструктора, friend - функции инициализации set() и функции вывода результатов prin C++
C++ Классы. Программирование алгоритмов с использованием конструктора, деструктора, friend - функции инициализации set() и функции вывода результатов pri
C++ Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,795
05.09.2011, 20:05     подставляемые функции #2
компилятор так решил - так ему типа удобнее
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
05.09.2011, 20:07  [ТС]     подставляемые функции #3
pincet, но всё же, почему? в теле функции нет цикла, оно состоит из одной строчки.
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
05.09.2011, 20:07     подставляемые функции #4
Вообще inline вроде как просто рекомендация. Хотя тут ф-ция небольшая, не знаю, почему компилятор так решил.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
05.09.2011, 20:08     подставляемые функции #5
stdcout, оптимизацию по скорости включал?
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
05.09.2011, 20:09     подставляемые функции #6
Да, не раз уже обсуждалось, что современные компиляторы сами решают, какие функции инлайнить, а какие нет Можно делать __forceinline (в VC++) или __inline__ (в GCC), но смысл? )
Bers
Заблокирован
05.09.2011, 20:10     подставляемые функции #7
inline - это не приказ компилятору, а лишь пожелание.
Он может и не инлайн заинлайнить) Если посчитает нужным. И наоборот - не все инлайн сделать инлайнами.
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,795
05.09.2011, 20:10     подставляемые функции #8
Цитата Сообщение от stdcout Посмотреть сообщение
pincet, но всё же, почему? в теле функции нет цикла, оно состоит из одной строчки.
хз. я компиляторы не пишу - я их пользую
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
05.09.2011, 20:12     подставляемые функции #9
Цитата Сообщение от Bers Посмотреть сообщение
Он может и не инлайн заинлайнить)
Так что тогда, стоит вообще забыть это слово - inline?
pincet
 Аватар для pincet
1096 / 757 / 79
Регистрация: 23.07.2010
Сообщений: 3,795
05.09.2011, 20:13     подставляемые функции #10
Цитата Сообщение от dihlofos Посмотреть сообщение
Так что тогда, стоит вообще забыть это слово - inline?
Все на асм 8)
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
05.09.2011, 20:32     подставляемые функции #11
Цитата Сообщение от dihlofos Посмотреть сообщение
Так что тогда, стоит вообще забыть это слово - inline
Нет. Включаем ту оптимизацию кода которая делает то что нужно с инлайнами.
Про gcc можно здесь посмотреть: http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
stdcout
53 / 53 / 2
Регистрация: 06.04.2011
Сообщений: 210
05.09.2011, 20:32  [ТС]     подставляемые функции #12
Enfernuz,
Можно делать __forceinline (в VC++) или __inline__ (в GCC), но смысл? )
Да я просто задание из книги Брюса Эккеля выполнял
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2011, 20:39     подставляемые функции
Еще ссылки по теме:

Применение переменных одной функции в другой функции C++
C++ Работа функции qsort - объяснить работу функции
Разница в работе созданной функции и основной функции C++

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

Или воспользуйтесь поиском по форуму:
Евгений М.
1033 / 974 / 53
Регистрация: 28.02.2010
Сообщений: 2,817
Завершенные тесты: 2
05.09.2011, 20:39     подставляемые функции #13
Кстати, у компилятора от VC++ 2008 опция /O2 делает то что нужно.
Yandex
Объявления
05.09.2011, 20:39     подставляемые функции
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru