Хак для функций-призраков

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Хак для функций-призраков

Сообщение runewalsh » 24.09.2014 05:00:10

Сишный препроцессор, как известно, умеет
Код: Выделить всё
#ifdef DEBUG
    #define dprf(...) print_debug_message(__VA_ARGS__)
#else
    #define dprf(...)
#endif

dprf("отладочное сообщение раз");
...
dprf("отладочное сообщение два");

Есть соблазн использовать такие же макрофункции-призраки в FPC. Давно заметил, что работает трюк
Код: Выделить всё
{$ifdef DEBUG}
    {$define dprf := print_debug_message}
{$else}
    {$define dprf := ;//}
{$endif}

dprf("Главное, чтобы дальше в строке не было операторов (ну и ELSE, не переносить на другую строку и что-нибудь ещё)");

Так и задумано или лучше не рисковать?

Добавлено спустя 9 часов 44 минуты 12 секунд:
В рассылке рассказали про транкооптимизацию -OoREMOVEEMPTYPROCS, при определённых условиях способную вырезать вызов вместе с вычислением аргументов.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Re: Хак для функций-призраков

Сообщение Sergei I. Gorelkin » 24.09.2014 23:38:58

Поддержка макросов существует для совместимости с Mac Pascal, это документированная возможность, можно использовать без риска.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Хак для функций-призраков

Сообщение runewalsh » 24.09.2014 23:44:58

Дело не в макросах самих по себе, а в забавном поведении //. Ну ок.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Re: Хак для функций-призраков

Сообщение stanilar » 25.09.2014 09:42:31

runewalsh писал(а):В рассылке рассказали про транкооптимизацию

Извините за любопытство: что за рассылка?
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: Хак для функций-призраков

Сообщение runewalsh » 25.09.2014 10:26:12

stanilar писал(а):Извините за любопытство: что за рассылка?

http://freepascal.org/maillist.var, не самый удобный формат в мире, но не нашёл, где ещё спросить.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Re: Хак для функций-призраков

Сообщение hinst » 25.09.2014 14:16:22

сделай свой препроцессор кароч который будет удалять вырезать все вызовы при необходимости
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Хак для функций-призраков

Сообщение vada » 26.09.2014 12:21:41

Препроцессор - лютое зло :(
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Хак для функций-призраков

Сообщение Mirage » 28.09.2014 00:49:26

По идее, вызовы пустых подпрограмм должны выкидываться вместе с вычислением аргументов. По крайней мере, если в этом вычислении не фигурируют вызовы нестандартных подпрограмм.
Если это так, то достаточно условной компиляции внутри dprf().
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru