当前位置: 首页 > news >正文

网站建设与维护心得体会苏州做网站推广的

网站建设与维护心得体会,苏州做网站推广的,手机管理wordpress站,手机网站给一个前言 这篇博客来聊一聊C/C的断言机制。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程#xff0c;未来预计四个月将高强度更新本专栏#xff0c;喜欢的可以关注本博主并订阅本专栏#xff0c;一起讨论一起学习。现在关注就是老粉啦#xff01; 目录 前言1. 断言介绍…前言 这篇博客来聊一聊C/C的断言机制。 嵌入式驱动学习专栏将详细记录博主学习驱动的详细过程未来预计四个月将高强度更新本专栏喜欢的可以关注本博主并订阅本专栏一起讨论一起学习。现在关注就是老粉啦 目录 前言1. 断言介绍1.1 断言的概念1.2 断言的实现1.3 禁用断言 2. 静态断言2.1 使用案例2.2 优点 3. 运行时断言3.1 assert使用3.2 assert注意事项 参考资料 1. 断言介绍 1.1 断言的概念 断言就是用于在代码中捕捉这些假设可以将断言看作是异常处理的一种高级形式。 断言表示为一些布尔表达式程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证因此可以在测试时启用断言而在部署时禁用断言。 最终用户在遇到问题时可以重新起用断言。它可以快速发现并定位软件问题同时对系统错误进行自动报警。断言可以对在系统中隐藏很深用其它手段极难发现的问题可以用断言来进行定位从而缩短软件问题定位时间提高系统的可测性。 断言的本质就是if ... else ...判断 if (假设为true) {程序正常运行 } else {报错并终止程序 }那为什么还要断言呢如果全是if ... else... 的话就会有无数个if语句甚至可能一个if语句的作用阈从文件头到文件尾。并且使用断言的时机大部分都是偶然事件只是要验证的假设仅仅想测试一下最坏的情况是否发生。 除此以外断言的assert()宏只有Debug版本才有效Release中则被忽略。 1.2 断言的实现 在使用断言时需要添加头文件#include assert.h 断言是assert(expression)这是一个宏 void assert( int expression );assert计算表达式如果值为假那么先想stderr打印一条错误信息然后调用abort来终止程序运行。 1.3 禁用断言 调试结束后可以在#include语句之前插入#define NDEBUG来禁用assert调用 #define NDEBUG #include assert.h2. 静态断言 2.1 使用案例 静态断言主要是用来约束程序在编译时要满足的一定要求是在c11中引入的。 其定义如下所示 static_assert(常量表达式提示字符串);如果第一个参数常量表达式的值为真(true或者非零值)那么static_assert不做任何事情就像它不存在一样否则会产生一条编译错误错误位置就是该static_assert语句所在行。错误提示就是第二个参数提示字符串。 #include assert.hint main(void) {static_assert(false, This is an error);return 0; }在IDE中就会报错提示。并且下面的错误提示就是后面自己写的错误提示。 2.2 优点 1、使用static_assert我们可以在编译期间发现更多的错误提前找出错误的原因。    2、static_assert可以用在全局作用域中命名空间中类作用域中函数作用域中几乎可以不受限制的使用。    3、编译器在遇到一个static_assert语句时通常立刻将其第一个参数作为常量表达式进行演算但如果该常量表达式依赖于某些模板参数则延迟到模板实例化时再进行演算这就让检查模板参数成为了可能。    4、由于之前有望加入C0x标准的concepts提案最终被否决了因此对于检查模板参数是否符合期望的重任就要靠static_assert来完成了所以如何构造适当的常量表达式将是一个值得探讨的话题。    5、性能方面由于是static_assert编译期间断言不生成目标代码因此static_assert不会造成任何运行期性能损失 3. 运行时断言 3.1 assert使用 运行时断言可以在程序运行过程中判断一些支持程序正常运行的假设性条件是否满足。 上面1.3中的assert宏就是动态断言 3.2 assert注意事项 可以在函数开始处检验传入参数的合法性 int readNum(int n) {assert(n 0);return 1; }每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败 // 不要写成这样 assert(n 0 n maxBound); // 最好写成这样 assert(n 0); assert(n maxBound);不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题 // 不要写成这样 assert(i 10); // 最好写成这样 assert(i 10); i;assert和后面的语句应空一行,以形成逻辑和视觉上的一致感 有的地方,assert不能代替条件过滤 参考资料 [1] C语言之断言的一些理解 [2] c11中静态断言static_assert
http://www.zqtcl.cn/news/499576/

相关文章:

  • 石家庄手机网站建设公司wordpress侧边栏显示子分类文字数
  • 公司网站客户案例个人做 网站2019
  • 个人网站怎么申请销售策划
  • 网站被黑 禁止js跳转企业为什么要建立集团
  • 建设网站的各种问题上海品牌女装排行榜前十名
  • seo优化搜索引擎网站优化推广网络关键词优化-乐之家网络科技商城网站备案能通过吗
  • 江门网站建设推广策划网站改版的宣传词
  • 网站建设三大部分国外购物平台网页界面设计
  • 公司商城网站建设方案wordpress旗舰
  • 京东云服务器怎么做网站企业宣传网站怎么做
  • 如何自学网站建设云南网爱我国防知识竞赛
  • 什么网站可以做投资设计接单
  • 网站内容批量替换桐乡网站制作
  • 怎么免费做网站教程制作xml网站地图文件
  • 广西智能网站建设哪家好网红商城
  • 关于建设网站的情况说明书wordpress 在线检测
  • 帝国cms 网站迁移错版怎样做心理咨询网站
  • 烟台建网站wordpress重写规则
  • 上海网站建设怎么赚钱平顶山网站建设服务公司
  • 导航网站如何被百度收录广告设计在线设计
  • 雪域什么网站是做电影的苏州优化方式
  • 设计网站多少钱手机百度助手
  • 驾校网上约车网站开发不会做网站如何做seo
  • 企业做推广可以发哪些网站宜兴埠网站建设
  • 网站后台文章添加成功 不显示公司设计网站建设合同
  • 后端开发需要掌握哪些知识潍坊优化公司
  • 专业手机网站制作哪家好wordpress wp-polls
  • 网站建设前分析网页制作素材按钮
  • 做视频网站怎么对接云盘松江新城网站建设
  • 温州阿里巴巴网站建设企业宣传片怎么拍