assert()函数用法

来源:互联网 发布:python for循环遍历 编辑:程序博客网 时间:2024/04/30 03:16

assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:

#include <assert.h>void assert( int expression );

assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。


#include <stdio.h>#include <stdlib.h>#include <assert.h>#define FALSE -1int find(int array[],int length,int value){    if( NULL == array || 0 == length)        return FALSE; /*    int index = 0;    for( ;index<length;index++ ){        if( value == array[index] )            return index;    }*/    int* start = array;    int* end = array + length;    while( start<end ){        if( value==*start )            return ((int)start - (int)array)/(sizeof(int));        start++;    }            return FALSE;}static void test(){    int array[10] = {1,2};    assert( 0 == find(array,10,1) );    assert( FALSE == find(array,10,10) );//返回值在预料中,程序不会被终止。。}int main(){    test();}
使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:

#include <stdio.h>#define NDEBUG#include <assert.h>

更多使用检查参数的合法性。

0 0
原创粉丝点击