Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Вниз
Как в дельфи сделать такое Найти похожие ветки
← →
Виктор007 (2007-10-30 22:36) [0]Не могу найти как пользоваться макро определениями...
#if DBG
#define DPRINT DbgPrint
#else
#define DPRINT
#endif
← →
homm © (2007-10-30 22:40) [1]{IFDEF } + F1, дальше сам найдешь…
← →
homm © (2007-10-30 22:40) [2]> [1] homm © (30.10.07 22:40)
{$IFDEF DBG}
← →
Reindeer Moss Eater © (2007-10-30 22:40) [3]ищи под кнопкой F1
← →
Виктор007 (2007-10-30 22:47) [4]Не, про IFDEF я знаю. Меня интересует как можно переопределять.
Например в отладочной версии я везде где надо выводить сообщения вставляю такие конструкции:
{$IFDEF DBG}
LogFile("-= START PROGRAM: %s =-", [paramstr(0)]);
{$ENDIF}
А хотелось бы описать макрос
#if DBG
#define DPRINT LogFile
#else
#define DPRINT
#endif
И потом в программе просто вставлять такие строки:
DPRINT("-= START PROGRAM: %s =-", [paramstr(0)]);
← →
Reindeer Moss Eater © (2007-10-30 22:50) [5]Для этого нужен препроцессор, а его нету.
← →
homm © (2007-10-30 22:52) [6]type
TLogFile = procedure (...);
var
DPRINT: TLogFile;
procedure emptyLog(...);
procedure LogFile(...);
……
{$IFDEF DBG}
DPRINT := LogFile;
{$ELSE}
DPRINT := emptyLog;
{$ENDIF}
← →
homm © (2007-10-30 22:53) [7]> [5] Reindeer Moss Eater © (30.10.07 22:50)
{$IFDEF DBG} — это и есть препроцессор, только функцианал разлечается не в лучшую сторону по сравнению с сишным. Зато Дельфи умная :)
← →
Reindeer Moss Eater © (2007-10-30 22:55) [8]Это не препроцессор, это компилятор понимает директивы компилятора.
← →
Reindeer Moss Eater © (2007-10-30 22:58) [9]Я под препроцессором понимаю нечто, работающее с исходником до того, как он будет скормлен компилятору.
← →
Виктор007 (2007-10-30 22:59) [10]Понятно, жаль. А можно ли настроить проект в дельфи, чтобы перед компиляцией вызывался свой препроцессор? Именно не батником компилировать, а нажаль в дельфе F9, она вызвала сначала препроцессор, а потом скомпилировала?
← →
homm © (2007-10-30 23:02) [11]> [10] Виктор007 (30.10.07 22:59)
> Понятно, жаль.
Что тебе понятно? Что именно жаль? Смотрел ли ты в [6]? Чесал ли репу?
← →
Вудзрш (2007-10-30 23:02) [12]уходи и не порти неше делфи своими сишными вредными привычками
← →
Виктор007 (2007-10-30 23:17) [13]> homm ©
Так быстро ответили что я не заметил некоторых ответов...
Я так и понял. Просто подумал что неплохо было бы чтобы в результирующий exe файл не компилировались отладочные сообщения и вызов функций
emptyLog(...);
Ведь дельфи в итоге сделает примерно так
asm
mov eax, DPRINT
call [eax]
end
пусть и emptylog ничего не сохраняет, но её вызов будет осуществлен.
> Вудзрш (30.10.07 23:02) [12]
Ничего я не порчу, просто интересуюсь.
P.S. а в Delphi 2007 ничего нового по этому поводу не ввели?
← →
homm © (2007-10-30 23:18) [14]> P.S. а в Delphi 2007 ничего нового по этому поводу не ввели?
Можно emptyLog объявить как inline.
← →
homm © (2007-10-30 23:22) [15]Можно еше в любой версии assert использовать
← →
DVM © (2007-10-30 23:46) [16]
> homm © (30.10.07 22:53) [7]
> > [5] Reindeer Moss Eater © (30.10.07 22:50)
>
> {$IFDEF DBG} — это и есть препроцессор,
Это не препроцессор. Компилятор в делфи однопроходный, а препроцессинг это еще один проход как минимум. Зато Делфи компилирует быстро.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.11.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.053 c