#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__FILE__, __LINE__))
你给了个0参数,显然会直接编译为assert_failed((uint8_t *)__FILE__, __LINE__))。就是去调用assert_failed函数。
而assert_failed函数是根据平台的不同而有不同的实现:
1、最后调用 exit 或 abort 函数,或干脆就死循环,前面部分交给用户补充实现。
2、向系统控制台(console)输出(使用 printf 等等),然后 exit, abort 等等。这个方法可能需要用户实现具体的输出定向。
|