#include void debug_(int level, char *file, int line, const char *func, char *fmt, ...); # define debug(level, expr...) debug_(level, __FILE__, __LINE__, DEBUG_FUNCTION, expr) /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__' which contains the name of the function currently being defined. This is broken in G++ before version 2.6. C9x has a similar variable called __func__, but prefer the GCC one since it demangles C++ function names. */ # if __GNUC_PREREQ (2, 4) # define DEBUG_FUNCTION __PRETTY_FUNCTION__ # else # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L # define DEBUG_FUNCTION __func__ # else # define DEBUG_FUNCTION ((__const char *) 0) # endif # endif