Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Внизмакросы Найти похожие ветки
← →
pavlov (2006-04-07 11:32) [0]Добрый день, господа!
Есть ли в дельфи такое понятие как макрос?
Или директива которая бы заставляла компилятор
подставлять в программу вместо самой функции
ее тело?
← →
Palladin © (2006-04-07 11:35) [1]Ctrl-Q A
← →
Сергей М. © (2006-04-07 11:35) [2]
> Есть ли в дельфи такое понятие как макрос?
Вплоть до Д7 - точно нет.
В последующих версиях, кажется, inline в каком-то виде присутствует (я не в курсе деталей).
← →
pavlov (2006-04-07 11:46) [3]>Ctrl-Q A
Оригинально :)
Только задача стоит не текст программы заменить,
а сформировать код на этапе компиляции
Например:
for i:=0 to 999 do
begin
y:=Function(x);
end;
Если Function() - простая функция, то в рантайме каждый раз при ее вызове
будет осуществляться запись регистров процессора, входных аргументов в стек. А при возвращении из процедуры будет проделана обратная работа.
А если функция еще и в цикле, да 1000 раз вызовется. Сами понимаете.
А вот если бы это был макрос как в си то вместо Function() компилятор
подставил бы просто код функции а не саму функцию.
← →
pavlov (2006-04-07 11:47) [4]Кстате
Ctrl-Q-A = Ctrl-R
← →
Юрий Иванов (2006-04-07 11:50) [5]Include вставляет текст из файла в данную точку текста программы при компиляции
← →
pavlov (2006-04-07 12:00) [6]Да об этом я не подумал, спасибо.
Правда не очень красиво :)
← →
Сергей М. © (2006-04-07 12:13) [7]
> Если Function() - простая функция, то в рантайме каждый
> раз при ее вызове
> будет осуществляться запись регистров процессора, входных
> аргументов в стек
Не факт.
Смотря что подразумевается тобой под "простая функция".
См. calling conventions + asm statement
← →
Deka © (2006-04-07 13:13) [8]Как сказал Сергей, в последних версиях присутствует inline. Только надо выдержать массу условий, чтобы тело функции успешно вставилось в код. Функция изначально оформляетя стандартно и компилятор пытается встроить ее в код. Если не сможет вставит её вызов и сообщит о не возможности интеграции. Ну и от Include никуда не деться.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.015 c