玩玩断言

玩玩断言

作者: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
0