assert宏的原型定义在
原型定义:
#include
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。
请看下面的程序Untitled-1.c:
#include
#include
int main(int argc, char const *argv[])
{
int i = 0;
while (1)
{
i++;
printf("Before assert is %d.\n", i);
assert(i <= 5);
printf("After assert is %d.\n", i); //当i>5时,不会执行到这一句
}
return 0;
}
运行结果如下:
Before assert is 1.
After assert is 1.
Before assert is 2.
After assert is 2.
Before assert is 3.
After assert is 3.
Before assert is 4.
After assert is 4.
Before assert is 5.
After assert is 5.
Before assert is 6.
Assertion failed!
Program: C:\***\Desktop\Untitled-1.exe
File: Untitled-1.c, Line 13
Expression: i <= 5
频繁的调用会极大的影响程序的性能,增加额外的开销。 在调试结束后,可以通过在包含#include
#include
#define NDEBUG
#include
/**
* 功能:改变缓冲区大小,
* 参数:nNewSize 缓冲区新长度
*/
int resetBufferSize(int nNewSize)
{
assert(nNewSize >= 0);
assert(nNewSize <= MAX_BUFFER_SIZE);
... //只有当参数nNewSize的值符合上面两个条件时,才会执行到这里
}
assert(nOffset>=0 && nOffset+nSize<=m_nInfomationSize);
assert(nOffset >= 0);
assert(nOffset+nSize <= m_nInfomationSize);
assert(i++ < 100);
这是因为如果出错,比如在执行之前i=100,那么这条语句就不会执行,那么i++这条命令就没有执行。
assert(i < 100);
i++;
参考链接:https://www.cnblogs.com/cpoint/p/3367326.html