#include void debug_(int level, const char *file, int line, const char *func, const char *fmt, ...); int xwrite(const char *, size_t); int xwrites(const char *); int xwritehexi(int); int xwritehexl(long); int xwritec(char); int xwritecr(void); int xwritedump(void *, long, int); int xinfdump(long, void *, int); # 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