assert在bash中对我提供的每个输入都有效,即使它';怎么了?如何解决这个问题? 我用C++编写了一个代码,然后编写了一个主文件来检查它,在这个主文件中,我用断言来检查我得到的值是否正确… 但过了一段时间,我发现即使我输入了错误的值,bash上也没有任何错误。有人知道为什么吗?或者为什么会发生这样的事情

assert在bash中对我提供的每个输入都有效,即使它';怎么了?如何解决这个问题? 我用C++编写了一个代码,然后编写了一个主文件来检查它,在这个主文件中,我用断言来检查我得到的值是否正确… 但过了一段时间,我发现即使我输入了错误的值,bash上也没有任何错误。有人知道为什么吗?或者为什么会发生这样的事情,c++,eclipse,C++,Eclipse,例如: 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 发件人: 如果NDEBUG被定义为源代码中包含的点处的宏名称,则assert不执行任何操作 因为您是使用-D

例如:

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

发件人:

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


因为您是使用
-DNDEBUG
编译的,所以这些语句根本不起任何作用。

这与bash.yes无关。。因为我在bash上测试这个,问题是assert在bash上不能正确工作。因为每次输入bash都不会给我任何警告。我想让它给我任何警告所以,你是说它在另一个外壳里工作?哪一个?(只是一个修辞性的问题。我仍然很确定它与bash无关。假设你问了一些关于烹饪的问题,你烧了你的食物。你会把这个问题标记为[刀],因为你用刀切食物吗?)我现在只使用bash,它不起作用,所以我应该在没有-DNDEBUG的情况下编译?@anna,这是正确的。你知道我应该在我的编译行中添加什么吗?这样它就不会告诉我nullPtr没有在这个范围内声明?非常感谢你,先生:)@anna,请创建另一篇关于
nullPtr
,带有。