#ifndef DAEMON_ASSERT_H
#define DAEMON_ASSERT_H

#ifdef NDEBUG

#define daemon_assert(expr)

#else

void daemon_assert_fail(const char *assertion,
                        const char *file,
                        int line,
                        const char *function);

#define daemon_assert(expr)                                                   \
           ((expr) ? 0 :                                                      \
            (daemon_assert_fail(__STRING(expr), __FILE__, __LINE__, __func__)))

#endif

#endif /* DAEMON_ASSERT_H */


syntax highlighted by Code2HTML, v. 0.9.1