在c++中什么叫断言?

 我来答
cultureluo
推荐于2016-02-09
cultureluo
采纳数:18 获赞数:603 LV4
擅长:电脑/网络
向TA提问 私信TA
展开全部
断言assert是一个宏,该宏在<assert>中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。
我们一般可以用在判断某件操作是否成功上。
摘录林锐博士高质量编程一书中相关内容。

~~~~~~~~~~~~~~~~~~~~~~~~
程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用。
断言assert是仅在Debug版本起作用的宏,它用于检查“不应该”发生的情况。以下是一个内存复制程序,在运行过程中,如果assert的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。
//复制不重叠的内存块
void memcpy(void *pvTo, void *pvFrom, size_t size)
{
void *pbTo = (byte *) pvTo;
void *pbFrom = (byte *) pvFrom;
assert( pvTo != NULL && pvFrom != NULL );
while(size - - > 0 )
*pbTo + + = *pbFrom + + ;
return (pvTo);
}
assert不是一个仓促拼凑起来的宏,为了不在程序的Debug版本和Release版本引起差别,assert不应该产生任何副作用。所以assert不是函数,而是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。
以下是使用断言的几个原则:
1)使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。
2)使用断言对函数的参数进行确认。
3)在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。
4)一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。当进行防错性编程时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。
冰上游鱼
2009-09-28
冰上游鱼
采纳数:261 获赞数:605 LV8
擅长:VC++ C/C++ JAVA相关
向TA提问 私信TA
展开全部
就是在文本的编辑区右键,出来选”断点“,或者叫断言,然后点执行(也就是红色感叹号右边的按钮)调试,可以在程序执行过程中观察断言处的变量变化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yaqifly
2009-09-28
yaqifly
采纳数:99 获赞数:883 LV6
擅长:C/C++ VC++ 其他编程语言 股票
向TA提问 私信TA
展开全部
ASSERT()声明的语句。如果没有错误,程序继续运行;否则程序报错。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起

为你推荐:

×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消