C语言中静态断言的使用

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作异常处理的高级形式,用于代码调试。

#define _CRT_SECURE_NO_WARNINGS    //关闭安全监察
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>    //静态断言的头文件

void main()
{
    double db1, db2;

    printf("输入被除数和除数:\n");
    scanf("%lf%lf", &db1, &db2);

    assert(db2 != 0);

    printf("%f/%f=%f\n", db1, db2, db1 / db2);

    system("pause");
}

如果除数输入不为0,则程序没有错误,正常运行:

如果输入除数为0,此时触发断言:

同时也可利用宏 NDEBUG 来打开或关闭断言:

#define _CRT_SECURE_NO_WARNINGS    //关闭安全监察
#define NDEBUG        //关闭静态断言

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>    //静态断言的头文件

void main()
{
    double db1, db2;

    printf("输入被除数和除数:\n");
    scanf("%lf%lf", &db1, &db2);

    assert(db2 != 0);

    printf("%f/%f=%f\n", db1, db2, db1 / db2);

    system("pause");
}

定义宏 NDEBUG 后,断言关闭,输入除数为0,程序仍然可以执行:

 

posted @ 2018-08-15 17:03  博观&约取  阅读(853)  评论(0编辑  收藏  举报