假设要求程序输入两个数先后为X囷Y要求 X >= Y,否则即认为程序错误代码如下。
由此可见如果 assert()中止了程序, 它会显示失败的测试、 包含测试的文件名和行号
assert()宏接受一个整型表达式作为参数。如果表达式求值为假assert()宏就在标准错误流(stderr) 中写入一条错误信息, 并调用abort()函数终止程序因此如下也能完成上述功能(abort()函数的原型在stdlib.h头文件中):
assert()宏定义在assert.h 头文件中,它是一个用于辅助调试程序的小型库
另外一个重要特点就是无需更改代码就能开啟或关闭 assert()的机制。 如果认为已经排除了程序的 bug 就可以把下面的宏定义写在包含assert.h的位置前面:
并重新编译程序, 这样编译器就会禁用文件Φ的所有 assert()语句 如
果程序又出现问题, 可以注释掉这条#define指令 然后重新编译程序, 这样就重新启用了assert()语句
_Static_assert() 接受两个参数。 第1个参数是整型常量表达式 第2个参数是一个字符串。 如果第 1 个表达式求值为 0编译器会显示字符串, 而且不编译该程序 如下,编译报错
桃花仙人種桃树,又摘桃花换酒钱_
发布了31 篇原创文章 · 获赞 18 · 访问量 3万+