断言assert的作用
断言就是对某种假设条件进行检查。断言在 C 语言中被定义为宏的形式(assert(expression)),而不是函数,在<assert.h>文件中。assert 通过检查表达式 expression 的值来决定是否需要终止程序的执行。即,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过调用 abort 函数终止程序运行;否则,assert 无任何作用。
如:
#include<iostream>
#include<cassert>
int main()
{
int a = 2,b=0;
assert(b!=0);//使用断言
printf("%d",a/b);
return 0;
}
此时,除以0会报错:
并且在控制台中打印出了报错的信息和报错的地方:
出错原因(出错位置):
再如:
#include<iostream>
#include<cassert>
using namespace std;
char* Tstrcpy(char* dest, const char* src)
{
assert(dest != NULL);//使用断言
while(*dest++ = *src++)
;
return dest;
}
#include<iostream>
#include<cassert>
int main()
{
char src[] = "hello world!";
Tstrcpy(NULL, src);
return 0;
}
报错信息:
所以,有时可以用断言assert来找处某些错误。