C++调试帮助之assert和NDEBUG
来源:互联网 发布:java 开源网盘 编辑:程序博客网 时间:2024/06/05 15:22
assert预处理宏
assert宏的原型定义在头文件assert.h中(C++对应的头文件为cassert),其作用是如果它的条件返回错误,则终止程序执行,原型定义:
//include <assert.h>void assert( int expression );
assert的作用是先计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,
然后通过调用 abort 来终止程序运行。
NDEBUG预处理变量
NDEBUG宏定义可以影响assert的行为,这个默认是没被定义的。当我们宏定义了NDEBUG,就屏蔽掉了assert的功能
我们可以使用一个#define语句定义NDEBUG,从而关闭调试状态。
自定义的调试变量和常量
编译器定义的变量:
__func__ //局部静态变量,存放函数的名字//注:书上可以直接用cout<<__func__<<endl直接打印函数名,//但vs2012不能,//但vs2012可以用cout<<__FUNCTION__<<endl直接打印函数名
预处理器定义的常量:
__LINE__ //存放当前行号的整型字面值__FILE__ //存放文件名的字符串字面值__TIME__ //存放文件编译时间的字符串字面值__DATE__ //存放文件编译日期的字符串字面值
vs2012测试上述常量:
void print() //定义函数print{ cout<<__FUNCTION__<<endl;}int main(){ print(); cout<<__FUNCTION__<<endl; cout<<__FILE__<<endl; cout<<__LINE__<<endl; cout<<__TIME__<<endl; cout<<__DATE__<<endl; return 0;}
结果如下:
阅读全文
0 0
- C++调试帮助之assert和NDEBUG
- 调试工具之assert和ndebug
- c++调试帮助(assert、NDEBUG)
- [C++]NDEBUG宏与assert行为
- [C++]NDEBUG宏与assert行为
- NDEBUG 、DEBUG宏 和assert() 的用法
- assert and NDEBUG
- # define NDEBUG assert
- gcc assert ndebug
- assert 与NDEBUG
- 系统assert与NDEBUG
- 关于assert, _DEBUG 与 NDEBUG
- debug 与ndebug的区别,assert用法
- ndebug与debug及assert()的用法
- DM8168调试之ASSERT (ipcFramesOutLink_tsk.c|IpcFramesOutLink_copyFrameInfo|275)解决
- C语言之ASSERT
- C语言之assert()
- NDEBUG
- Java 简介
- es 调优
- JAVA Web过滤器学习
- PHP实现页面静态化——全部纯静态化
- city-deeplab
- C++调试帮助之assert和NDEBUG
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- 数据预处理之Normalize
- tomcat端口冲突结局方案
- JS——作用域 && 闭包
- redis集群安装
- 读《人工智能的未来》
- Srping aop事务
- 数据结构 第4讲 单链表