首页 > 解决方案 > assert 对于我给它的每个输入都在 bash 中工作,即使它是错误的?如何解决这个问题?

问题描述

我使用 C++ 编写了一个代码,然后编写了一个主文件来检查它,在这个主文件中我使用了一个断言来检查我得到的值是否为真......但过了一会儿我发现我没有得到即使我输入了错误的值,bash 上的任何错误。有谁知道为什么?或者为什么会发生这样的事情?

例如 :

assert(numOfSegments == 1); // i don't get warning 
//but also

assert(numOfSegments == 100); // also here no warning even though this is wrong

//这就是我在 bash 中编译的方式:

g++ -std=c++0x -DNDEBUG -g *.cpp

标签: c++eclipse

解决方案


https://en.cppreference.com/w/cpp/error/assert

如果NDEBUG在源代码中包含的位置被定义为宏名称,则 assert 什么也不做。

由于您正在使用 进行编译-DNDEBUG,因此这些语句根本没有做任何事情。


推荐阅读