扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
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元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流