assert.h 详解

assert.h

简介

assert.h 常用于防御式编程。防御式编程是提高软件质量技术的有益辅助手段。防御式编程的主要思想是:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。

断言 assert 就是声明某种东西为真,该函数多用于调试。

宏函数

assert

  • 原型:void assert (int expression);

  • 说明:aserrt 是一个宏而非函数,实际并不具有函数原型。当它被执行时,判断 expression 的真假,如果为假,它就向标准错误打印一条诊断信息并终止程序。当消除所有预期错误后,可以通过 #define NDEBUG 消除所有断言。

  • 返回值:无。

  • 实例:

#include 
#include 

//#define NDEBUG        //定义后,预处理器将丢弃所有 assert 函数。

void dialog(int *p){
    assert( p != NULL );
    printf("%d", *p);
}

int main(){
    int a = 10;
    int *pa = NULL, *pb = NULL;
    pa = &a;
    dialog(pa);
    dialog(pb);
    return 0;
}

控制台会输出:

> Assertion failed: p != NULL, file c:\\...\\....\\...\test.c, line 9

你可能感兴趣的:(C,标准库)