void sdsIncrLen(sds s,int incr) { struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); if(incr >= 0) assert(sh->free >=(unsigned int)incr); else assert(sh->len >= (unsigned int)(-incr)); sh->len += incr; sh->free -= incr; s[sh->len] = '\0'; }
這個函數用來計算調整sds字符串中len和free的大小。每次對sds字符串通過操做以後,字符串的len和free的大小都會變更。express
函數:函數
void assert( int expression );
先計算表達式expression,若是expression爲真,則assert()無任何做用;若是expression爲假,則函數先向標準錯誤流stderr打印一條出錯信息,而後經過abort來終止程序運行。
本質上,assert是一個宏,並非函數。code