一直很疑惑斷言的使用機制,不清楚為什么在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;
}
- 斷言正是用在條件永遠不可能發生的地方。