Como separar a lógica de log da lógica de negócios em um programa C? E em um C ++?

Atualmente, estou codificando em C e tenho muitos printfs para poder acompanhar, em alguns momentos, o fluxo do meu aplicativo. O problema é que algumas vezes eu quero mais detalhes do que outros, então geralmente passo meu tempo comentando / descomentando meu código C, para que eu possa obter a saída apropriada.

Ao usar Java ou C #, geralmente posso separar meu código de implementação da lógica de log usando Aspectos.

Existe alguma técnica semelhante usada em C para solucionar esse problema?

Eu sei que eu poderia colocar um sinalizador chamado DEBUG que poderia ser ativado ou desativado, para que eu não tivesse que dar voltas e comentar / descomentar todo o meu código toda vez que eu quisesse mostrar ou ocultar os printfs. A questão é que eu também gostaria de me livrar da lógica de log no meu código.

Se ao invés de C eu estivesse codificando em C ++, seria melhor?

Editar

Parece que existe um AspectC ++, portanto, para C ++, parece haver uma solução. E o C?

obrigado

questionAnswers(6)

yourAnswerToTheQuestion