#include <cassert>做什么/可以做什么</cassert>

时间:2014-04-04 17:20:24

标签: c++ include

我的老师在c ++程序中使用了这个包含但没有解释它。我很好奇它是什么以及它做了什么。我无法在网上找到任何有用的东西。只是简单提一下它是如何调试工具的。我可以用它做什么? 我应该对此感到好奇吗?

#include <cassert>

3 个答案:

答案 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并中止程序执行。

相关问题