I have a macro defined as below. This is used to print debugging information to the console. Now, I have to send this debugs over to a socket without disturbing the existing code. I am thinking of
changing this so that the Debug_Print
macro would check if it is in socket mode and call a different macro to send it over the socket. I tried dprintf
and it works for my purpose. How can I change this Debug_Print
macro so that it calls printf(...)
vs dprintf(fd, ...)
by checking is_in_socket_mode()
?
bool is_in_socket_mode()
function would tell if it is in socket mode.
Existing macro:
#define Debug_Print(label, ...) ( Is_Enabled(label) ? (void)printf(__VA_ARGS__) : (void)0 )
I tried to use is_in_socket_mode()
in the existing macro, but I am not able to figure out how to do this. I believe I have to introduce another macro and call that within the Debug_Print
macro.
A bit about terminology: macros are instantiated at compile time. At runtime they do not exist anymore, so "calling a macro" in the sense of calling a function is not possible.
Since is_in_socket_mode()
is a run-time function, this should be a question of checking its value in the macro:
#define Debug_Print(label, ...) ( Is_Enabled(label) ? ((is_in_socket_mode()) ? (void)dprintf(fd, __VA_ARGS__) : (void)printf(__VA_ARGS__)) : (void)0 )