c++ - 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
解决方案
从https://en.cppreference.com/w/cpp/error/assert:
如果
NDEBUG
在源代码中包含的位置被定义为宏名称,则 assert 什么也不做。
由于您正在使用 进行编译-DNDEBUG
,因此这些语句根本没有做任何事情。
推荐阅读
- c - 如何释放主线程函数分配的内存
- excel - 使用不同的过滤器在数据透视表中捕获 + 保存屏幕截图
- javascript - 从复选框获取值到日历
- php - 如何使用 PHP 从字符串中显示多个值
- android - 如何仅在前台使用 RxJava 创建定期网络请求?
- ios - 如何快速阻止 UIPageViewController 的滑动手势?
- android - 已签名的 APK,在某些设备中“未安装应用程序”,在某些设备中,相同的 apk 工作正常
- php - Query to obtain staff related (pivot table)
- flutter - How to draw a horizontal line in flutter row widgets?
- c# - 依赖注入和 InternalsVisibleTo 属性