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,程序仍然可以执行:
文章写来不易,转载请标注。。。欢迎关注!