Я пишу для встроенных систем на C.
В своих программах я использую следующие макросы:
#define _L log_stamp(__FILE__, __LINE__)
#define _LS(a) log_string(a)
#define _LI(a) log_long(a)
#define _LA(a,l) log_array(a,l)
#define _LH(a) log_hex(a)
#define _LC(a) log_char(a)
#define ASSERT(con) log_assert(__FILE__, __LINE__, con)
Когда я делаю релизную версию, я просто отключаю директиву #define DEBUG, и все макросы становятся пустыми.
Обратите внимание, что он не потребляет циклов процессора и памяти в версии выпуска.
Макросы - это единственный способ сохранить информацию в журнале: где это было сделано
(номер файла и строки).
Если мне нужна эта информация, я использую:
_L;_LS("this is a log message number ");_LI(5);
в противном случае без директивы _L
.