Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1143725508
Чародей
2006-03-30 17:31
2006.04.23
Memory Management


3-1141203570
Кира
2006-03-01 11:59
2006.04.23
BDE Delphi


15-1144126390
Ega23
2006-04-04 08:53
2006.04.23
С Днём рождения! 4 апреля


2-1144733806
Сергей И.
2006-04-11 09:36
2006.04.23
Работа с принтером


2-1144325836
Layner
2006-04-06 16:17
2006.04.23
Как правильно сделать "скользящий курсор" по выборке





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский