続々々 assert(3) の無効化方法
昔書いたけど結局使ってないやつ。
#if defined(ENABLE_ASSERT) #if defined(DEBUG) #include#define ASSERT(e) assert((e)) #define DASSERT(e, ...) *1( #define DASSERT(e, ...) ((e) ? (void)0 : my_assert(__FILE__, __LINE__, #e, __VA_ARGS__)) void my_assert(const char *filename, int line, const char *stmt, const char *fmt, ...) { char buf[2048]; va_list argp; va_start(argp, fmt); snprintf(buf, sizeof(buf), "assertion \"%s\" failed: file \"%s\", line %d: %s\n", stmt, filename, line, fmt); vfprintf(stderr, buf, argp); va_end(argp); } #endif /* DEBUG */ #else /* !ENABLE_ASSERT */ #define ASSERT(e) ((void)0) #define DASSERT(e, ...) ((void)0) #endif /* ENABLE_ASSERT */
*1:e) ? (void)0 : fprintf(stderr, __VA_ARGS__), fprintf(stderr, "\n"), assert((e)))
#else /* !DEBUG */
#include