assert.h

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C头文件 代码 · 共 65 行

H
65
字号
/****************************************************************************
File: assert.h

Description: Error handling functions (assertions, panic crashes)

JAM_assert(condition) - similar to the C/C++ assert() macro except
   it calls the crash handler function.  Turn off with NDEBUG or
   JAM_NDEBUG.
 
void JAM_crash(const char*, ...) - pointer to crash handler function

JAM_CrashHandler JAM_set_crash_handler(JAM_CrashHandler) - returns
   former handler function, defaults to function which prints message
   to stderr and then calls abort().

Notes:
   jam/assert.cpp defines static objects JAM_crash and JAM_error_msg.
   
   
History:
1992 Feb 24 Jam         created
1992 Mar 02 Jam         Added JAM_out_of_mem() to set as new_handler
1992 Jul 03 Jam         moved NewLog stuff to separate file

****************************************************************************/

#ifndef JAM_ASSERT_H
#define JAM_ASSERT_H

#ifdef JAM_IGASSERT  // substitute dummy inlines; don't need to link

#  include <stdlib.h>
#  include <assert.h>
   inline void JAM_crash(const char*, ...) { abort(); }
#  define JAM_set_crash_handler(x) (void)0
#  define JAM_assert(p) assert(p)

void (*const JAM_out_of_mem)() = abort;

#else    // must link jam/assert.cpp

typedef void (*JAM_CrashHandler)(const char*, ...);

extern JAM_CrashHandler JAM_crash;

extern JAM_CrashHandler JAM_set_crash_handler(JAM_CrashHandler);

extern const char* JAM_error_msg; // "JAM internal error"

#if defined(NDEBUG) || defined(JAM_NDEBUG)
#  define JAM_assert(p) ((void)0)
#else
#  define JAM_assert(p) ((p) ? (void)0 : \
          (void)JAM_crash("%s: %s,%d\n", JAM_error_msg, __FILE__, __LINE__))
#endif

// call set_new_handler(JAM_out_of_mem) because JAM classes don't test
extern void JAM_out_of_mem();   // calls JAM_crash("Out of memory");

#endif   // JAM_IGASSERT

#endif // JAM_ASSERT_H


⌨️ 快捷键说明

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