[C++]NDEBUG宏与assert行为
来源:互联网 发布:ftp默认使用的端口 编辑:程序博客网 时间:2024/05/20 10:51
- NDEBUG宏是Standard C中定义的宏,专门用来控制assert()的行为。如果定义了这个宏,则assert不会起作用。
#ifdef NDEBUG
#define assert(x) ((void)0)
#else
... - C Standard中规定了assert以宏来实现。<assert.h>被设计来可以被多次包含,其中一上来就undef assert,然后由NDEBUG宏来决定其行为。如:
#ifdef NDEBUG
将以上代码放在c/cpp最上方(当然,其后不能出现其它#include <assert.h>语句),就可以保证c/cpp所在的编译单元中的assert,在release下也会触发abort行为。
#undef NDEBUG
#include <assert.h>
#define NDEBUG
#else
#include <assert.h>
#endif // #ifdef NDEBUG - NDEBUG宏由于字面意思,也被用于作为判断debug/release版本的宏,不过这个是编译器、环境相关的,并不可靠。比如vc中,对生成的release版本项目,默认会定义这个宏,而gcc并没有定义,得用-DNDEBUG参数来定义。
- C++ Standard中完全采用了C中的定义。
- [C++]NDEBUG宏与assert行为
- [C++]NDEBUG宏与assert行为
- assert 与NDEBUG
- 系统assert与NDEBUG
- 关于assert, _DEBUG 与 NDEBUG
- debug 与ndebug的区别,assert用法
- ndebug与debug及assert()的用法
- NDEBUG 、DEBUG宏 和assert() 的用法
- assert and NDEBUG
- # define NDEBUG assert
- gcc assert ndebug
- 关于 Xcode 中 NSAssert() 的用法 ,以及 assert() 与 NDEBUG
- 关于 Xcode 中 NSAssert() 的用法 ,以及 assert() 与 NDEBUG
- 调试工具之assert和ndebug
- c++调试帮助(assert、NDEBUG)
- C++调试帮助之assert和NDEBUG
- NDEBUG
- NDEBUG
- 理论上 Android可以处理 多个手指的触摸
- Essay Citations
- 深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题
- The Five-Paragraph Essay
- Essay Writing Tips
- [C++]NDEBUG宏与assert行为
- Essay Test Taking Strategies
- ImageButton隐藏边框
- 环境变量配置-根本
- Writing a Persuasive Essay
- Writing a Critical Essay
- SQL语句
- Writing a Narrative Essay
- Writing a Descriptive Essay