16#include "../../../include/lammp/lmmp.h"
20#if defined(LAMMP_WINDOWS)
44#ifdef __STDC_NO_THREADS__
45#error "Threads support is required for setting abort function"
82 return "ASSERT_FAILURE";
84 return "DEBUG_ASSERT_FAILURE";
86 return "PARAM_ASSERT_FAILURE";
88 return "MEMORY_ALLOC_FAILURE";
90 return "MEMORY_FREE_FAILURE";
92 return "OUT_OF_BOUNDS";
96 return "UNEXPECTED_ERROR";
98 return "UNKNOWN_TYPE";
static const char * type_to_str(lmmp_error_t type)
static BOOL CALLBACK init_abort_cs(PINIT_ONCE once, PVOID param, PVOID *ctx)
lmmp_abort_fn lmmp_set_abort_fn(lmmp_abort_fn func)
设置 LAMMP 全局退出函数(所有线程均生效)
void lmmp_abort(lmmp_error_t type, const char *msg, const char *func, int line)
LAMMP 全局退出函数,内部错误或断言失败时调用,若设置了全局退出函数,则会调用该函数,否则会调用默认的退出函数。
static void abort_func_unlock(void)
static CRITICAL_SECTION abort_func_cs
Copyright (C) 2026 HJimmyK(Jericho Knox)
static void abort_func_lock(void)
static INIT_ONCE abort_cs_once
static lmmp_abort_fn lmmp_abort_func
void(* lmmp_abort_fn)(lmmp_error_t type, const char *msg, const char *func, int line)
LAMMP 全局退出函数指针类型
@ LAMMP_ERROR_MEMORY_ALLOC_FAILURE
@ LAMMP_ERROR_DEBUG_ASSERT_FAILURE
@ LAMMP_ERROR_UNEXPECTED_ERROR
@ LAMMP_ERROR_MEMORY_LEAK
@ LAMMP_ERROR_ASSERT_FAILURE
@ LAMMP_ERROR_PARAM_ASSERT_FAILURE
@ LAMMP_ERROR_MEMORY_FREE_FAILURE
@ LAMMP_ERROR_OUT_OF_BOUNDS