#ifndef __KERNEL_DEBUG_H #define __KERNEL_DEBUG_H void panic_spin(char *filename, int line, const char *func, const char *condition); /** * @brief panic 是一个宏,__VA_ARGS__ 表示可变参数,即 ...,用于传递参数 * __VA_ARGS__ 是预处理器所支持的专用标识符。代表所有与省略号相对应的参数 * “...” 表示定义的宏其参数可变 */ #define PANIC(...) panic_spin(__FILE__, __LINE__, __func__, __VA_ARGS__) #ifdef NDEBUG #define ASSERT(CONDITION) ((void)0) #else #define ASSERT(CONDITION) \ if (CONDITION) \ { \ } \ else \ { \ PANIC(#CONDITION); \ } #endif // NDEBUG #endif // __KERNEL_DEBUG_H