Re[2]: SRC: макрос для DEBUG
От: Кодт Россия  
Дата: 14.11.02 09:50
Оценка:
Здравствуйте McSeem2, Вы писали:

MS>Что-то мне это не нравится с одной стороны. С другой стороны — красиво. Не нравится тем, что при использовании DEBUG_ONLY в release версии все равно будет присутствовать мертвый код, и будет jmp для его обхода — и не надо надеяться на оптимизатор!


Почему?

MS>К тому же, будут дополнительные предупреждения компилятора типа "code can never be reached" — я не говорю о MS C++, я говорю о грамотных C++ компиляторах вообще. В общем, у меня противоречивое мнение — "элегантно, но грязно"


В финальном релизе можно повыкидывать код.
Например, определить макросы
#define BEGIN_DEBUG  DEBUG_ONLY {
#define END_DEBUG    }

...
BEGIN_DEBUG
  fprintf(log, "hello,bugs!");
END_DEBUG

а перед выпуском версии повыдирать фрагменты BEGIN_DEBUG — END_DEBUG.

К сожалению, С++ не позволяет делать мета-макросы, вида
#define BEGIN_DEBUG  { #ifdef DEBUG
#define END_DEBUG    #endif }

(хотя, может быть, в C99 уже есть что-то такое?)
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.