assert断言

一、ASSERT概述
    ASSERT()称为断言,c语言中在#include <assert.h>中定义,c++中在#include <cassert>中定义。通常用来判断程序中是否出现了非法数据。
 
    如果ASSERT(express);express的表达式值为false,程序报告错误,终止运行,以免产生严重后果,同时也便于查找错误;表达式的值位true则继续执行后面的语句。
 
    ASSERT() 只在debug版本中有效,编译的Release版本则被忽略。另外,assert()是ANSIC标准中规定的函数,与ASSERT()功能相似,ASSERT()是宏,且assert()可以存在于Release中
 
    assert()的缺点是频繁调用会极大的影响程序的性能,增加额外开销。调试结束后,可以通过包含#include <assert.h>的语句之前插入#define NDEGUG来禁用assert()
1 #include <stdio.h>
2 
3 #define NDEBUG
4 
5 #include <assert.h>

 

二、使用注意事项
1.assert() 在函数开始出检验传入参数的合法性!
 
2.每个assert()一般只检查一个条件,因为如果同时检查多个条件,则无法直观判断是哪个条件失败。
 
3.不能使用改变环境的语句,因为assert()只在DEGUB中生效。例如:
assert(i++ < 100)就是错误的
posted @ 2017-07-29 09:41  沙皮狗  阅读(148)  评论(0编辑  收藏  举报