作者:LAMP小白 点击:1868 发布日期:2012-10-02 11:54:00 返回列表
c版本
assert是包含在assert.h中的,当assert()中的条件为假时触发,首先他会调用stderr输出一条错误信息,然后调用abort终止程序
#include#include int main(void) { int aa = 100; assert(aa == 111); printf("%d", aa); // never run here return 0; }
他会输出
assert: ./assert.c:7: main: Assertion `aa == 111mio_#39; failed.
Aborted
不过过多的断言会极大的影响程序的性能,个人感觉如果你熟悉代码的话,断言并不是必须的,很多错误抛出你可以自己来做
禁止断言
#include#define NDEBUG #include
PHP版本
php的断言就更好玩了,主要是多了几个设置项,如下:
ASSERT_ACTIVE 是否开启断言
ASSERT_WARING 断言是否弹出警告
ASSERT_BAIL 在条件为假的时候是否终止程序
ASSERT_QUIET_EVAL 是否终止错误输出(这个选项我无论怎么设置都会输出错误)
ASSERT_CALLBACK 回调函数(这个很有用)
其中ASSERT_CALLBACK会向指定的函数传入3个参数:触发的文件路径 代码的行数 和 代码(不过代码这一个参数一直是stringmio_quot;mio_quot;)
使用方法如下:
上一篇:在PHP中使用位图排序 下一篇:快递查询API