C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
assert.h 的功能是用于诊断,仅包含assert
宏。可以在程序中使用该宏来诊断程序状态(例如某个变量是否为0等),若检查失败,程序终止。
assert.h
文件内容如下:
#include <sys/cdefs.h>
#undef assert
#undef __assert_no_op
#define __assert_no_op __BIONIC_CAST(static_cast, void, 0)
#ifdef NDEBUG
# define assert(e) __assert_no_op
#else
# if defined(__cplusplus) || __STDC_VERSION__ >= 199901L
# define assert(e) ((e) ? __assert_no_op : __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, #e))
# else
# define assert(e) ((e) ? __assert_no_op : __assert(__FILE__, __LINE__, #e))
# endif
#endif
#if !defined(__cplusplus) && __STDC_VERSION__ >= 201112L
# undef static_assert
# define static_assert _Static_assert
#endif
__BEGIN_DECLS
void __assert(const char* __file, int __line, const char* __msg) __noreturn;
void __assert2(const char* __file, int __line, const char* __function, const char* __msg) __noreturn;
__END_DECLS
assert库定义的函数
下面列出了头文件 assert.h 中定义的唯一的函数:
序号 | 函数 & 描述 |
---|---|
1 | void assert(int expression) 这实际上是一个宏,不是一个函数,可用于在 C 程序中添加诊断。 |