assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行.
原型定义:#include <assert.h>
void assert(int expression);
Assert 的作用是计算表达式expression,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用abort来终止程序运行。
使用assert的缺点是,频繁的调用会极大地影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含#include <assert.h>的语句之前插入#define NDEBUG来禁用assert的调用。
用法总结与注意事项:
1)在函数开始处检验传入参数的合法性。
例如:比较两个一位数的大小
#include <assert.h>
int max(int a,int b)
{
assert(a>=0&&a<10);
assert(b>=0&&b<10);
return a>b ? a:b;
}
2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观判断是哪个条件失败。
3)不能改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使程序在运行时遇到问题。
4)assert和后面的语句应空一行,以形成逻辑和视觉上的一致感。
5)有的地方assert不能代替条件过滤。
相关文章
- 03-05C语言中float如何存储?(转载)
- 03-05C语言fgetc和fputc函数用法详解
- 03-05C语言结构体用法
- 03-05全面详解C语言使用cJSON解析JSON字符[转载]
- 03-05转载-C语言中<<、>>、&、|的实际用途
- 03-05C语言assert用法(转载)
- 03-05C语言关于typedef对结构体的用法的用法
- 03-05c语言#define用法
- 03-05c语言【const】用法
- 03-05转载------------C函数之memcpy()函数用法