我的老师在c ++程序中使用了这个包含但没有解释它。我很好奇它是什么以及它做了什么。我无法在网上找到任何有用的东西。只是简单提一下它是如何调试工具的。我可以用它做什么? 我应该对此感到好奇吗?
#include <cassert>
答案 0 :(得分:3)
与所有头文件一样,它允许您访问其中声明的函数,类型和变量。 (和宏,让我们不要忘记宏,因为它们恰好适用于这种情况。)
标头<cassert>
为您提供标准C标头<assert.h>
中的所有内容,但包含在namespace std;
中(这是一种模式,C ++提供与每个C标头对应的<cXYZ>
{ {1}}:<XYZ.h>
,<cstdlib>
等。)
This documentation表示唯一的内容是单个宏<cmath>
答案 1 :(得分:2)
这个包含文件允许使用断言宏调用。断言用于检查程序中的致命错误并在找到时暂停执行(例如,在解除引用之前检查函数参数是否为NULL)。通常断言在非调试模式下编译的代码中不存在(即使用定义NDEBUG),但存在于以调试模式编译的代码中。
例如,您可能具有以下功能:
void PrintString(char* str)
{
assert(str != NULL);
printf(str);
}
在调试模式下编译时,如果使用str的NULL值调用,程序将立即暂停(通常打印assert的位置),但在生产代码中,assert是NOP,函数调用将继续。您可以使用assert快速显示意外的函数调用和情况,或者在单元测试期间无法构建代码。
答案 2 :(得分:0)
我们可以理解这一点,就像在code
中写a=2
,然后使用assert(a)
然后更改a=0
,再次调用assert(a)
。这将生成assertion failed
并中止程序执行。