断言适用于我给它的每个输入,即使它是错误的?如何解决这个问题?



我用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

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

如果NDEBUG在源代码中包含的位置被定义为宏名称,则assert不执行任何操作。

由于使用-DNDEBUG进行编译,因此这些语句根本不起任何作用。

最新更新