【发布时间】:2021-12-25 13:54:31
【问题描述】:
试图找出 NDEBUG 和 _DEBUG 在 Visual Studio 中的实际含义,我遇到了一个 cppreference page,它解释了 NDEBUG 是关于 assert 函数是否在代码中起作用。
调试与assert 函数有什么关系?在定义 assert 的行为方式时,为什么我们有名称 NDEBUG?
更新
为了更准确地提出这个问题,我想知道一些实现细节。 assert 用于调试是什么?我们究竟要断言什么?为什么我们要避免这样的断言?
【问题讨论】:
-
提示:
assert()不是函数而是宏。现在尝试查找并阅读该宏的定义。另外,做一些研究:stackoverflow.com/search?q=%5Bc%2B%2B%5D+what+is+assert! -
@WeatherVane 我也看到了,其实那个帖子让我更加困惑
-
断言失败表示存在错误。它是一种检测错误的工具。这就是它与调试的关系。