assert

关于assert系统函数

  1. assert使用

assert一般用于检测函数参数的合法性,攻城狮们可以自己封装Assert作为宏,比如:

#define Assert(condition)
do {
	if (condition){
		NUll;
	} else {
		Assert(__FILE__ , __LINE__);
	}
} while(0)

调用时,像这样:

void Test(unsigned char *str)
{
    ASSERT(str != NULL);
    /*函数处理代码*/
}
  1. assert注意事项
    assert中不应该使用函数调用、变量赋值、使用变量修改符(++、- -等)。比如:
for (i = 0; i < 100; i++){
	Assert(do_something() == 0);
}

那么每次assert就会展开到上面介绍的do while中,会非常影响性能。
正确的是assert中只判断bool型的返回值即可:

bool ret;
for (i = 0; i < 100; i++){
	ret = do_something();
	Assert(ret);
}
  1. PS

注意,不要滥用assertions 。请不要使用它来检查你「认为应该为真」的条件,请只使用它来检查「一定必须为真」的条件。滥用assertions 可能会造成难以维护的重复逻辑。在一段逻辑中加入assertions 是有好处的,因为它迫使你重新考虑这段代 码的约束条件。如果「不满足这些约朿条件,程序也可以正常运行」,assertions 就不会带给你任何帮助,只会把代码变得混乱,并且有可能妨碍以后的修改。你应该常常问自己:如果assertions 所指示的约束条件不能满足,代码是否仍能正常运行?如果可以,就把assertions 拿掉。(来自:https://www.kancloud.cn/sstd521/refactor/194285)

llinux高级编程(中文版).pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值