⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.h

📁 About: hamsterdb is a database engine written in ANSI C. It supports a B+Tree index structure, uses
💻 H
字号:
/** * 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -