powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Странный вопрос про inline
17 сообщений из 17, страница 1 из 1
Странный вопрос про inline
    #33553590
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то спутал. Может кто подскажет.
Возможно ли сделать объявление inline-функции в заголовочном файле, а ее определение в *.cpp. Вроде, непонятно,при описании в заголовочном файле функции требуется указать как external, а тогда нельзя указывать inline. Или я чего-то путаю? Поправьте, ежели чего.

PS
Конечно, можно просто сделать include этого файла в заголовочный, но это не интересно, вроде, не рекомендуется, да и лучше тогда сразу определние функции в самом заголовочном файле писать - чего препроцессор зря мучить.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33553641
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем их в cpp выносить? inline по определению должны быть малюсенькими, в одну-две команды. И external они естественно быть не могут.

Хотя один из подходов к написанию программ утверждает что inline вообще использовать не надо. Оптимизатор в компиляторе и так умный, сам догадается если какую-то функцию можно вставить напрямую.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33553744
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно ли сделать объявление inline-функции в заголовочном файле, а ее определение в *.cpp

нет
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33554538
nikname
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
class A{

public:
inline int a();
void b(int c){return ++c}

};


int a::a()
{ return 0;}

и a и b - обе inline но вообще это - по выбору компилятора.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33554752
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА зачем их в cpp выносить?
Прсто пивычка. Есть несколько функций. Выполняют однуи ту же функцию (оопс, тавтология). Первая исходит из правильности входных данных, когда это верно, вызываешь ее (такое во многих местах можно гарантировать). Так сказать GIGO = Garbage In -> Garbage Out. Другая перед расчетом делает кучу проверок, а на точно подходящие данные вызывает свою быструю подругу. В некоторых местах достаточно одной проверки на массу вызовов этой (быстрой) функции. Тело функции с проверкой хранится в cpp, привык и вторую хранить рядом. Теперь придется выкинуть в заголовок.
Что касается пользовать inline - пользуешь, в соответствующие места подставляется кусок кода, вместо вызова функции. Пухнет экзешник, но каплю времени можно выиграть. Мне это и нужно. А доввериться компилятору - так я не заю его критерии оптимизации, хотя, конечно, повлиять на них, теоретически, могу, указав ключи оптимизиции.

To nickname:
Я знаю, что функции-члены класса с определением внутри объявления класса по-возможности инлайнятся (пример а).
С примером b - зависят от установки параметров оптимизации, но в общем случае не угадаешь.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33554755
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл добавить. Я понимаю, что inline-функция не обязательно будет подставлена вместо вызова. Напрмер, если в ней есть try-блок, то - точно нет. Это просто подсказка компилятору. Так сказать, пожелание. Но если нет ляпов, как с try-catch, то обычно постановка будет выполнена. Во всяком случае, он постарается ее обязательно выполнить ... если, онечно, в опциях не поставлено такие подсказки игнорировать. Напрмер, в CBuilder 5 по умолчанию register игнорируется, но это так, к слову.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33555778
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBaga...Возможно ли сделать объявление inline-функции в заголовочном файле, а ее определение в *.cpp.....


да, возможно... но работать не будет...
почему ?
да поставте ся на место того компилятора...
есть этап компиляции - получение обьектного кода и записи его в файлы с расширение обжик... вот Вы (компилятор) идёте по тексту программы. Натыкаетесь на инструкцию inline и ??? и что Вы должны подставить в код, где был вызов этой ботвы ? Сколько байт резервировать ? Может колл и размер под указатель ? Но позвольте, она тоды уже не инлайн - по определению... Кхм.. Ну например Вы можете дотянутся до сырцов си пипи и что ? компилять, проверять бросив предыдущий кусок ? А если и там инлайн ? и вообще всё зацикленно ?

отсюда и понятно - на этапе превращения текста в бинарный код компилятор ДОЛЖЕН ВСЁ ЗНАТЬ об этой INLAIN функции...

Кстати инлайн метод автоматом НЕ выйдет, если класс будет ВНЕШНИМ. Хотя сразу оговорюсь - тестилось на шестёрки MSVC...

с уважением
(круглый)
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33556181
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так сделать можно, стандарт это не запрещает. Но как INLINE функция почти наверняка не будет подставляться, поскольку ни один компилятор это делать не умеет.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33556303
LeonM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, хотя неудобно. в VC6 - несоответствие стандарту, нужно, кажется, __inline или __forceinline.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33557114
Afix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BagaBaga
PS
Конечно, можно просто сделать include этого файла в заголовочный, но это не интересно, вроде, не рекомендуется, да и лучше тогда сразу определние функции в самом заголовочном файле писать - чего препроцессор зря мучить.
Страуструп рекомендует всё наоборт:избегать включение в .h обычных определений фурнкций как и переменных, а inline включать в .h
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558425
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AfixСтрауструп рекомендует всё наоборт:избегать включение в .h обычных определений фурнкций как и переменных, а inline включать в .h


я бы ышо добавил - избегать включения ашников в другие ашники...чревато на больших проектах, при работе более одного программиста...


с уважением
(круглый)
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558459
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0я бы ышо добавил - избегать включения ашников в другие ашники...чревато на больших проектах, при работе более одного программиста...а что ж конструкции типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#ifndef VCL_H
#define VCL_H

#include <vcl0.h>

#endif  // VCL_H

не спасают ?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558476
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Карабас Барабас...а что ж конструкции типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#ifndef VCL_H
#define VCL_H

#include <vcl0.h>

#endif  // VCL_H

не спасают ?
Posted via ActualForum NNTP Server 1.3

проблема не в повторном вляпывании определений...вовсе не в них...СЁЭр...проблема в получении разных бинарников, либо не правильно работающего кода....ежели не ребилдом пользоваться...почему нуна обьяснять ?

(круглый)
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558731
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolobok0 Карабас Барабас...а что ж конструкции типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#ifndef VCL_H
#define VCL_H

#include <vcl0.h>

#endif  // VCL_H

не спасают ?
Posted via ActualForum NNTP Server 1.3

проблема не в повторном вляпывании определений...вовсе не в них...СЁЭр...проблема в получении разных бинарников, либо не правильно работающего кода....ежели не ребилдом пользоваться...почему нуна обьяснять ?

(круглый)

Утилита make создана для того чтобы эти пробемы решать.
Она ко всему прочему может(должна)
учитывать изменения h файлов при очередной зборке.

В больших уважающих себя проектах всегда должен быть ответственный за
поддержку makefile в актуальном состоянии.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558815
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-
Утилита make создана для того чтобы эти пробемы решать.


Утилита make никаким образом не связана с языком С++.
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558827
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
onstat-Утилита make создана для того чтобы эти пробемы решать.
Она ко всему прочему может(должна)
учитывать изменения h файлов при очередной зборке.
В больших уважающих себя проектах всегда должен быть ответственный за
поддержку makefile в актуальном состоянии.

про make не скажу.... давно юзал его при создании серваков под Novell. А вот MSVC студия не чуствительна ко вложенным ашникам в ашниках (простите за тофтологию). Ну и имеем...не совсем то, что хотели...

в больших проектах, как страховка - полный ребилд при отслюнявливании очередного релиза на тестирование....

с уважением
(круглый)
ЗЫ
Студия - вообще, вещь в себе... Столько багов...Млин и даже не исправляются от версии к версии. Славо богу в 2005 подправили глюк 65535 при компиляции сборок си бимоля...
...
Рейтинг: 0 / 0
Странный вопрос про inline
    #33558869
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv onstat-
Утилита make создана для того чтобы эти пробемы решать.


Утилита make никаким образом не связана с языком С++.

Она не связана напрямую, зато сильно облегчает
сборку программ написанных на С++.

Вы предлагаете не пользоватся make, отладчиками, РАД и прочими
утилитами созданными для облегчения труда програмиста и напрямую
не имеющими отношения к языку?

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


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