#ifdef DEBUGP #undef DEBUGP #endif #ifdef __cplusplus #include #ifdef WIN32 #include #endif #else #include #ifdef WIN32 #include #endif #endif #ifndef __GNUC__ #ifndef __DEBUG_H__ #define __DEBUG_H__ #include static void debugprintf(const char *format, ...) { va_list ap; char *f = NULL; const char *p="%s:%d "; size_t plen = strlen(p); va_start(ap, format); f = (char *)malloc(plen + strlen(format) + 1); if (!f) return; memcpy(f, p, plen); memcpy(f + plen, format, strlen(format) + 1); vfprintf(stderr, f, ap); va_end(ap); free(f); } static void dummyprintf(const char *format, ...) {} #endif #endif #ifdef DEBUG #ifndef __GNUC__ #define DEBUGP debugprintf #else #define DEBUGP(args...) do { fprintf(stderr, "%s:%d ", __FILE__, __LINE__); fprintf(stderr, ## args); } while(0) #endif #else #ifndef __GNUC__ #define DEBUGP dummyprintf #else #define DEBUGP(args...) #endif #endif