error.h

来自「About: hamsterdb is a database engine w」· C头文件 代码 · 共 75 行

H
75 行
字号
/** * Copyright (C) 2005-2007 Christoph Rupp (chris@crupp.de). * All rights reserved. See file LICENSE for licence and copyright * information. * * this file has error logging routines and a strerror() replacement * */#ifndef HAM_ERROR_H__#define HAM_ERROR_H__#ifdef __cplusplusextern "C" {#endif #include <ham/types.h>/** * function prototypes */extern void dbg_lock(void);extern void dbg_unlock(void);extern void dbg_prepare(const char *file, int line, const char *expr);extern void dbg_log(const char *format, ...);extern void dbg_verify_failed(const char *format, ...);/**  * in debug mode we write trace()-messages to stderr, and assert()  * is enabled. * * not every preprocessor supports ellipsis as macro-arguments - * therefore we have to use brackets, so preprocessors treat multiple * arguments like a single argument. and we need to lock the output,  * otherwise we are not thread-safe. this is super-ugly. */#ifdef HAM_DEBUG#   define ham_trace(f)      do {                                      \                                dbg_lock();                            \                                dbg_prepare(__FILE__, __LINE__, 0);    \                                dbg_log f;                             \                                dbg_unlock();                          \                             } while (0)#   define ham_assert(e, f)  if (!(e)) {                               \                                dbg_lock();                            \                                dbg_prepare(__FILE__, __LINE__, #e);   \                                dbg_verify_failed f;                   \                                dbg_unlock();                          \                             }#else /* !HAM_DEBUG */#   define ham_trace(f)      #   define ham_assert(e, f)     #endif /* HAM_DEBUG *//** * log() and verify() are available in every build */#define ham_log(f)           do {                                      \                                dbg_lock();                            \                                dbg_prepare(__FILE__, __LINE__, 0);    \                                dbg_log f;                             \                                dbg_unlock();                          \                             } while (0)#define ham_verify(e, f)     if (!(e)) {                               \                                dbg_lock();                            \                                dbg_prepare(__FILE__, __LINE__, #e);   \                                dbg_verify_failed f;                   \                                dbg_unlock();                          \                             }#ifdef __cplusplus} // extern "C"#endif #endif /* HAM_ERROR_H__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?