- inline функции, DeadMustdie, 15:11 , 19-Апр-06 (1)
>а возможно ли использовать одну и туже функцию в разных участках когда >как inline а в других обычным вызовом? >может есть какоя то директива препроцессору? Собственно само ключевое слово inline не обязывает компилятор внедрять код функции в каждую точку вызова - например, при сборке без оптимизации большинство компиляторов и вовсе это никогда не делают. Даже при использовании агрессивных режимов оптимизатора большие inline-функции могут быть обработаны как статические (или, более строго, как weak-символы). Специальные директивы для жесткого управления этими вещами мне неизвестны. Если они и существуют в каких-то компиляторах, то являются нестандартными.
- inline функции, kir, 15:33 , 19-Апр-06 (2)
ну я тоже не нашел но надеялся....
- inline функции, landor, 21:19 , 20-Апр-06 (3)
Если компилятор в конкретном месте кода о*ет от сложности кода то может не делать инлиновую подстановку. Вообще есть решение(для GCC, но для извращенцев): inline void func() { //any code }int main() { func();//инлайновая подстановка(при оптимизации) asm("call _func\n"); //для тех самых } Увидев таку ботву любой, уважающий себя компилятор, шлепнет в объектный файл и static-вариант. Чтоб не шлепать на асме, вот для гурманов исходного кода: #define STATIC_CALL(FUNCTION) \ asm("call _" #FUNCTION "\n"); Идею подал, для ф-й с параметрами т*сь сами. Если надо подскажу.
- inline функции, horsh, 00:09 , 25-Апр-06 (4)
> >inline void func() >{ > //any code >} > >int main() >{ > func();//инлайновая подстановка(при оптимизации) >} >Проблема в том, что тут инлайна может и не случиться. Заставить компилятор инлайнить функцию подчас сложнее чем попросить не инлайнить.
- inline функции, DeadMustdie, 10:37 , 25-Апр-06 (5)
>Проблема в том, что тут инлайна может и не случиться. >Заставить компилятор инлайнить функцию подчас сложнее >чем попросить не инлайнить. Всё верно, за исключением того, что здесь нет совершенно никакой проблемы :)
|