一直很疑惑断言的使用机制,不清楚为什么在debug版本当中使用断言机制,而在release版本中要去掉断言
参考网上一些说法,在这边总结一下:
先给出一个示例程序:
#define NDEBUG
#include <assert.h>
void *memcpy(char *dst, const char *src,size_t n)
{
//安全检查
assert( (dst != NULL) && (src != NULL) );
unsigned char *pdst = (unsigned char *)dst;
const unsigned char *psrc = (const unsigned char *)
//防止内存重复
assert( !(psrc <=pdst && pdst < psrc+n));
assert( !(pdst <=psrc && psrc < pdst+n));
while(n--){
*pdst++ = *psrc++;
}
return dst;
}
- 断言正是用在条件永远不可能发生的地方。