c语言断言assert-创新互联

assert宏的原型定义在中,他的作用是如果他的表达式为error,就终止程序执行,

成都创新互联是专业的松山网站建设公司,松山接单;提供成都网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行松山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

尽量利用断言来提高代码的可测试性

使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG 来禁用assert调用

如何合理利用 ASSERT(断言)

由于 ASSERT 只要“#define NDEBUG”之后就不参与编译,因此在调试时有利于快速定位错误,并 且在发布后这些判断不影响执行效率(出现问题之后可以再次打开断言进行调试)。

但是一般 ASSERT 不 能用来检查错误的发生。

如下例子

char *strdup(char *str) { 

char *new_str;

 ASSERT(str != NULL); 

new_str = (char *)malloc(strlen(str) + 1); 

ASSERT(new_str != NULL)

 strcpy(new_str, str);

 return new_str; 

}

另外使用断言有如下约定:

i. 每个 assert 只检查一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败。

ii. 不能再 assert 中加入执行语句,比如 assert(i++)是不合理的,,因为assert只在DEBUG中生效,如果这么做,会使用程序在真正运行时遇到问题

iii. assert 后面需要增加空行。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前标题:c语言断言assert-创新互联
URL链接:http://scyanting.com/article/doossd.html