C++之assert详解
2017-10-17 11:34
274 查看
①定义:
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
②作用
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单test.c:
③不足
已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:
④应用场景
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include <assert.h> void assert( int expression );
②作用
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单test.c:
#include <stdio.h> #include <assert.h> #include <stdlib.h> int main( void ) { FILE *fp; fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件 assert( fp ); //所以这里不会出错 fclose( fp ); fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败 assert( fp ); //所以这里出错 fclose( fp ); //程序永远都执行不到这里来 return 0; }
③不足
已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:
#include <stdio.h> #define NDEBUG #include <assert.h>
④应用场景
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
相关文章推荐
- 嵌入式 C/C++中ASSERT(0) 详解
- assert详解 C++[转]
- C++ assert() 详解
- C/C++中volatile关键字详解
- C++智能指针详解
- C++ 自然语言编码详解系列一(字符编码基础)
- C++文件读写详解(ofstream,ifstream,fstream)
- C++中this指针的作用以及用法详解
- C++模板之特化与偏特化详解
- C++ 智能指针详解
- c++ 中__declspec 的用法详解
- C & C++的编译过程详解 (整理在此方便以后)
- C++内存管理详解
- C++中STL之map用法详解
- C++编译和链接过程的详解
- C++拷贝构造函数详解
- C/C++中extern关键字详解
- C/C++除法实现方式及负数取模详解
- C/C++中extern关键字详解
- C/C++中extern关键字详解