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

网站建设运营合同书网站配色表

网站建设运营合同书,网站配色表,家电网站首页制作,入侵织梦网站后台2019独角兽企业重金招聘Python工程师标准 #xfeff;#xfeff; 搜集与总结了assert函数的用法#xff0c;记于此#xff0c;以备后续与查找使用#xff1a; ****身在Windows的世界#xff0c;但还是深爱着我的它---Linux****I love Linux forever***** … 2019独角兽企业重金招聘Python工程师标准 搜集与总结了assert函数的用法记于此以备后续与查找使用 ****身在Windows的世界但还是深爱着我的它---Linux****I love Linux forever***** ****先给一个小例子热热身*********Never give up ************** 请看下面的程序清单badptr.c #include #include #include 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; } [rootlocalhost error_process]# gcc badptr.c [rootlocalhost error_process]# ./a.out a.out: badptr.c:14: main: Assertion fp failed. 已放弃 使用assert的缺点是频繁的调用会极大的影响程序的性能增加额外的开销。 在调试结束后可以通过在包含#include的语句之前插入 #define NDEBUG 来禁用assert调用示例代码如下 #include #define NDEBUG #include 用法总结与注意事项 1)在函数开始处检验传入参数的合法性 如: int resetBufferSize(int nNewSize) { //功能:改变缓冲区大小, //参数:nNewSize 缓冲区新长度 //返回值:缓冲区当前长度 //说明:保持原信息内容不变 nNewSize0表示清除缓冲区 assert(nNewSize 0); assert(nNewSize MAX_BUFFER_SIZE); ... } 2)每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败 不好: assert(nOffset0 nOffsetnSizem_nInfomationSize); 好: assert(nOffset 0); assert(nOffsetnSize m_nInfomationSize); 3)不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题 错误: assert(i 100) 这是因为如果出错比如在执行之前i100,那么这条语句就不会执行那么i这条命令就没有执行。 正确: assert(i 100) i; 4)assert和后面的语句应空一行,以形成逻辑和视觉上的一致感 5)有的地方,assert不能代替条件过滤。   assert宏的原型定义在assert.h中其作用是如果它的条件返回错误则终止程序执行原型定义  #include assert.h  void assert( int expression );  assert的作用是现计算表达式 expression 如果其值为假即为0那么它先向stderr打印一条出错信息  然后通过调用 abort 来终止程序运行。  http://www.chongtang.me/index.php/1419 提高程序健壮性之assert使用 编写能正常运行的程序很难编写在错误情况下仍然表现的很“优雅”的程序更难。这篇文章将和大家讨论一些编程技巧可以使我们在运行中的程序中早点发现错误检测和从问题中恢复。那就先讨论下断言(assert)的使用吧。 在编码时有一个好的目标应该时刻铭记在心那就是应该想办法让bug或者异常错误尽早使得程序down掉或者出现错误。因为这样可以帮助你在开发和测试阶段尽快找出bug。有一些错误不会无缘无故的暴露自己往往是产品都到了客户手上这些错误才会显现出来。 一个最简单的检查异常条件的方法是使用标准C的assert宏它的参数是一个bool表达式。当表达式为假时程序会退出。在退出之前打印错误消息包括源文件行号和表达式本身。断言非常有用它提供了一个作用于程序内部的广泛的一致性检查方法。例如使用断言测试函数参数的有效性测试异常的返回值等等。 每一个断言的使用不仅提供了一个程序运行时的条件检查也像一个对源代码级别的程序操作的说明性文档。如果你的程序包含了一个断言也就是告诉那些阅读你源代码的人在你的源代码中在程序的这一点这个条件应该为真如果不为真那就是一个bug。 当然在追求性能的代码中使用assert会降低程序性能。但是你放心在编译时加入NDEBUG参数编译器就可以对assert进行预处理从而移除它。正因为在预处理时可能移除assert那你使用时就得小心了。什么时候用什么时候不用就成了一个问题。通常你不应该在assert内部调用函数定义变量或者使用改变值的操作符如。 我们假设你这样使用了 for (i 0; i lt; 100; i) assert (do_something () 0); 然后你可能会发现这样会使得性能大大降低从而在创新编译使使用NDEGUG参数。这将移除整个assert宏这就将do_something( )也被移除了再也不被调用。为了纠正错误你应该这样写 for (i 0; i lt; 100; i) { int status do_something (); assert (status 0); } 另外应该铭记在心的是不要用assert去检查无效的输入。用户可不喜欢自己在输入时程序直接退出即便是输入错误程序最好也有友好的响应。所以你应该对无效输入进行检查并输出一些有用的提示信息。只在程序运行中进行内部检查时使用断言。 在这里我会给出一些比较好的在程序中使用assert的地方 (1)空指针检查。例如针对一个函数的参数进行空指针检查。你可以这样使用assert (pointer ! NULL);产生的错误会像这样Assertion ‘pointer ! ((void *)0)’ failed。这样当出现空指针时你的程序就会退出并很好的给出错误信息。 (2)检查函数参数的值。例如如果一个函数只能在它的一个参数foo为正值的时候被调用你可以在函数开始时这样写:assert (foo 0);这将帮助你检测函数的错误使用这也给源代码阅读者很清晰的印象那就是在这里对函数的参数值有限制。 说了这么多行动起来吧大胆的在你的程序中使用断言。 http://www.programfan.com/blog/article.asp?id10284 ---------------------------------------------------------------    ASSERT()是一个调试程序时经常使用的宏在程序运行时它计算括号内的表达式如果表达式为FALSE  (0),  程序将报告错误并终止执行。如果表达式不为0则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据如果出现了终止程序以免导致严重后果同时也便于查找错误。    ASSERT只有在Debug版本中才有效如果编译为Release版本则被忽略。    ---------------------------------------------------------------    ASSERT宏定义如下    #define  ASSERT(f)  \    do  \    {  \          if  (!(f)    AfxAssertFailedLine(THIS_FILE,  __LINE__))  \                  AfxDebugBreak();  \    }  while  (0)  \    ASSERT(逻辑表达式)    如果括号中的逻辑表达式值为假的话会弹出调试命令窗口提示具体在哪个文件的哪一行发生了断言错误    ---------------------------------------------------------------    ASSERT    Evaluates  an  expression,  and  displays  a  diagnostic  message  if  the  expression  is  FALSE.  Ignored  in  retail  builds.    Syntax    ASSERT(          cond    );    Parameters    cond    Expression  to  evaluate.    Remarks    In  debug  builds,  if  the  expression  is  FALSE,  this  macro  displays  a  message  box  with  the  text  of  the  expression,  the  name  of  the  source  file,  and  the  line  number.  The  user  can  ignore  the  assertion,  enter  the  debugger,  or  quit  the  application.    Example    ASSERT(rtStartTime    rtEndTime);    ---------------------------------------------------------------    断言(ASSERT)的使用方法很简单。为什么要用初学者可能比较迷惑。    契约式编程讲的比较清楚建议可以先看看这类书。    一个函数由前置条件、后置条件和不变式组成。在VC中我们可以通过断言来保证这三个条件。可以大大提高了软件的质量。    ---------------------------------------------------------------    如果ASSERT()中的条件不成立(比如  ASSERT(0)  ;    ),会弹出一个比较吓人的对话框。    点击重试可以到达  ASSERT  断言不成立的那一行    此时可以在watch窗口查看变量值找出出错的原因。    转载于:https://my.oschina.net/u/2344808/blog/397925
http://wiki.neutronadmin.com/news/419138/

相关文章:

  • 前台网站系统源码有什么网站做头像
  • 浙江省国有建设用地使用权建议网站php的网站数据库如何上传
  • 网站免费云主机杭州室内设计设计公司前十排名
  • 模板网站与定制开发网站的区别推广网站
  • 无锡建网站电话wordpress建站wifi
  • 手机建站图片建设网站如入什么费
  • 广西住房城乡和建设厅网站首页后端低代码平台
  • 网站充值怎么做的7x7x7x7x8黄全场免费
  • 免费的网站推广怎么做效果好专业电商网站开发
  • 购物类网站开发开一家软件开发公司需要什么
  • 网站开发模板免费下载百度快照推广
  • 辽阳网站建设学校智慧团建系统入口
  • 川制作官方网站西安网站建设专业公司
  • 网站建设 优化翻译软件翻译英语做网站
  • 九江建设公司网站义乌建设局网站打不开
  • 个人网站排版设计学做美食去哪个网站好
  • 网站名称图标如何做才能显示网站建设公司的性质
  • 网站服务器停止响应怎么办北京舞美设计制作公司
  • 网站的管理包括国外免费网站
  • 网站首页制作网站官方新闻平台有哪些
  • 合肥网站建设方案托管网站技术维护
  • 更改wordpress主题字体宁波seo哪家好快速推广
  • 山东网站集约化建设十大软件排行榜
  • 静态页面网站关键词权重
  • 网站代码上传到服务器后要怎么做的凡科建站是什么
  • 做网站多少做网站好的框架
  • 电子商务网站建设期末试题建设一个网站需要哪些知识
  • 网站开发设计参考文献贵阳能做网站的公司有哪些
  • pageadmin做网站要钱吗盐城网站开发公司电话
  • 北京公司如何做网站咨询行业