显示的消息(即错误信息)具体内容取决于特定的库实现,但至少应包括:断言失败的表达式、源文件的名称以及发生错误的行号。...4的顺序表中在第20位插入一个5:
SLInsert(&s, 20, 5);
在vs编译器中运行查看结果:
可见assert()函数成功的报出了这个错误,报错格式如下:
断言失败:表达式(pos>=0&...现在我们还面临一个问题,就是不知道到底是因为pos出现bug,还是因为pos>ps->size导致程序出现bug....也即,虽然使用了assert函数来报错,但同时检测多个条件时,断言失败,我们还是无法清楚的立即知道到底是哪个条件出错了,所以我们应当在使用assert函数时让它只检测一个条件....一旦确定了的假定,就要使用断言对假定进行检查。
一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。