0
点赞
收藏
分享

微信扫一扫

什么是assert,应该在说明情况下使用

Alex富贵 2022-01-20 阅读 50
c++
  • 是什么
    断言(assertion)是 C 语言中常用的防御式编程方式,减少编程错误。最常用的是在函数开始的地方,检测所有参数。有时候也可以在调用函数后,检查上下文是否正确。
    C 89 assert这个宏在 <assert.h>中,c99在 <cassert>,提供断言功能。当程序以 release 配置编译时(定义了 NDEBUG 宏),assert() 不会做检测;而当在 debug 配置时(没定义 NDEBUG 宏),则会在运行时检测 assert(cond) 中的条件是否为真(非 0),断言失败会直接令程序崩溃。

  • 需要注意什么
    由于在release 版本中,assert不被执行,千万不要在assert中加入有副作用的代码。

错误!!
assert(a++ != 1);
  • 什么时候用assert,什么时候处理异常
    assert用来防御程序员的代码编写错误,如传入正确的参数这是由程序员负责的:
//处理1~10的情况
void handle_one_to_ten(int num){
	assert(num<10 && num>0);
	...
}

程序员无法控制的运行时错误应该用异常处理,如服务器连接失败,内存分配失败等。

举报

相关推荐

0 条评论