assert.h标准库提供了一些常用的宏定义,它们可以用来验证程序的正确性,以及在发生错误时打印出错误信息。
assert宏定义
assert宏定义用于验证程序的正确性,如果表达式的值为假,则程序会报错。它的一般形式为:
assert(expression);
如果表达式的值为真,则程序继续执行;如果表达式的值为假,则程序会报错,并打印出错误信息。
NDEBUG宏定义
NDEBUG宏定义用于关闭assert宏定义的功能,它的一般形式为:
#define NDEBUG
一旦定义了NDEBUG宏定义,assert宏定义就失效,程序不会报错,即使表达式的值为假也不会报错。
_ASSERTE宏定义
_ASSERTE宏定义与assert宏定义的功能基本相同,它的一般形式为:
_ASSERTE(expression);
与assert宏定义不同的是,_ASSERTE宏定义不受NDEBUG宏定义的影响,即使定义了NDEBUG宏定义,_ASSERTE宏定义也会检查表达式的值,如果表达式的值为假,则程序会报错,并打印出错误信息。
_ASSERTE_EXPR宏定义
_ASSERTE_EXPR宏定义与assert宏定义的功能基本相同,它的一般形式为:
_ASSERTE_EXPR(expression, message);
与assert宏定义不同的是,_ASSERTE_EXPR宏定义可以在报错时打印出自定义的错误信息,如果表达式的值为假,则程序会报错,并打印出message参数指定的错误信息。
VERIFY宏定义
VERIFY宏定义与assert宏定义的功能基本相同,它的一般形式为:
VERIFY(expression);
与assert宏定义不同的是,VERIFY宏定义不受NDEBUG宏定义的影响,即使定义了NDEBUG宏定义,VERIFY宏定义也会检查表达式的值,如果表达式的值为假,则程序会报错,并打印出错误信息。
VERIFY_EXPR宏定义
VERIFY_EXPR宏定义与assert宏定义的功能基本相同,它的一般形式为:
VERIFY_EXPR(expression, message);
与assert宏定义不同的是,VERIFY_EXPR宏定义可以在报错时打印出自定义的错误信息,如果表达式的值为假,则程序会报错,并打印出message参数指定的错误信息。