The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"inline функции"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"inline функции"  
Сообщение от kir (??) on 19-Апр-06, 15:01 
а возможно ли использовать одну и туже функцию в разных участках когда как inline а в других обычным вызовом?
может есть какоя то директива препроцессору?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "inline функции"  
Сообщение от DeadMustdie email(??) on 19-Апр-06, 15:11 
>а возможно ли использовать одну и туже функцию в разных участках когда
>как inline а в других обычным вызовом?
>может есть какоя то директива препроцессору?

Собственно само ключевое слово inline не обязывает компилятор внедрять код функции в каждую точку вызова - например, при сборке без оптимизации большинство компиляторов и вовсе это никогда не делают. Даже при использовании агрессивных режимов оптимизатора большие inline-функции могут быть обработаны как статические (или, более строго, как weak-символы).

Специальные директивы для жесткого управления этими вещами мне неизвестны. Если они и существуют в каких-то компиляторах, то являются нестандартными.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "inline функции"  
Сообщение от kir (??) on 19-Апр-06, 15:33 
  ну я тоже не нашел
  но надеялся....
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "inline функции"  
Сообщение от landor (??) on 20-Апр-06, 21:19 
Если компилятор в конкретном месте кода о*ет от сложности кода то может не делать инлиновую подстановку. Вообще есть решение(для GCC, но для извращенцев):
inline void func()
{
  //any code
}

int main()
{
    func();//инлайновая подстановка(при оптимизации)
    asm("call _func\n"); //для тех самых
}

Увидев таку ботву любой, уважающий себя компилятор, шлепнет в объектный файл и static-вариант.

Чтоб не шлепать на асме, вот для гурманов исходного кода:
#define STATIC_CALL(FUNCTION) \
    asm("call _" #FUNCTION "\n");

Идею подал, для ф-й с параметрами т*сь сами. Если надо подскажу.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "inline функции"  
Сообщение от horsh (??) on 25-Апр-06, 00:09 
>
>inline void func()
>{
>  //any code
>}
>
>int main()
>{
>    func();//инлайновая подстановка(при оптимизации)
>}
>

Проблема в том, что тут инлайна может и не случиться.
Заставить компилятор инлайнить функцию подчас сложнее
чем попросить не инлайнить.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "inline функции"  
Сообщение от DeadMustdie email(??) on 25-Апр-06, 10:37 
>Проблема в том, что тут инлайна может и не случиться.
>Заставить компилятор инлайнить функцию подчас сложнее
>чем попросить не инлайнить.

Всё верно, за исключением того, что здесь нет совершенно никакой проблемы :)

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру