| #ifdef DEBUGP | |
| #undef DEBUGP | |
| #endif | |
| #ifdef __cplusplus | |
| #include <cstdio> | |
| #ifdef WIN32 | |
| #include <cstring> | |
| #endif | |
| #else | |
| #include <stdio.h> | |
| #ifdef WIN32 | |
| #include <string.h> | |
| #endif | |
| #endif | |
| #ifndef __GNUC__ | |
| #ifndef __DEBUG_H__ | |
| #define __DEBUG_H__ | |
| #include <stdarg.h> | |
| 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 |