Макросы зло (действительно ли проще всегда писать этот MY_LOG с извратным синтаксисом?). Для логов вполне сойдёт вариант с деструктором (чтобы не было двойного исключения, поставить ту функцию из std:..., не помню имени), и это уже есть, например, в QDebug и google test.
Я об этом думал, но как-то стремновато держать когтистое и зубастое животное, страдающее поносом, только за одно место :) в макросе я его могу подтыкивать с обоих сторон. Например, не надо обдумывать так глубоко, "можно ли игнорить исключения в деструкторе хелпера вывода в лог", всё тривиально.
Если у кого-то оно работало так уже, без грабель и невыполнимых хотелок, то вполне можно.
Reply
if (дебажная трассировка) { только в дебаге вычислять аргументы для лога }.
В формате
MY_LOG("info at index " << i << " is: " << GenerateDebugString(i) );
можно спрятать такой if тривиальным образом.
Чтобы в "обычном" режиме не вычислять то, что не печатается, и чтобы не думать про эффективную генерацию дебажного вывода.
Reply
Reply
Reply
Reply
Если у кого-то оно работало так уже, без грабель и невыполнимых хотелок, то вполне можно.
Reply
Reply
Leave a comment