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

做网站产品资料表格网络营销推广方案范文

做网站产品资料表格,网络营销推广方案范文,桥梁毕业设计代做网站,开源商城网站文章目录 主要内容调试和发布模式使用示例用法总结与注意事项 断言是一种用于在程序执行过程中进行调试的工具,能够帮助开发者验证程序的某些假设是否为真。如果断言失败,程序会终止,并输出一个错误消息,通常包含出错的文件名和行…

文章目录

      • 主要内容
      • 调试和发布模式
      • 使用示例
      • 用法总结与注意事项


断言是一种用于在程序执行过程中进行调试的工具,能够帮助开发者验证程序的某些假设是否为真。如果断言失败,程序会终止,并输出一个错误消息,通常包含出错的文件名和行号。这对于调试和测试非常有帮助。

主要内容

assert是一个宏,并不是函数。assert 宏接受一个表达式作为参数,如果该表达式的值为假(0),它会:

  1. 打印一条错误信息,指出断言失败的表达式,以及出错的文件名和行号。
  2. 调用 abort 函数终止程序执行。

具体的实现可以简单概括如下:

#define assert(expression) ((expression) ? (void)0 : __assert_fail(#expression, __FILE__, __LINE__))void __assert_fail(const char *expr, const char *file, int line) {fprintf(stderr, "Assertion failed: (%s), file %s, line %d.\\n", expr, file, line);abort();
}
/*助于理解 assert 功能
*/

调试和发布模式

在调试模式下,断言可以帮助捕捉程序中的错误。而在发布模式下,通常会禁用断言,以提高程序性能。可以通过定义 NDEBUG 宏来禁用断言:

#define NDEBUG    // 使用时一定要在包含assert库函数前定义
#include <assert.h>

一旦定义了 NDEBUGassert 宏将被定义为空操作,不会进行任何检查或中断程序:

#ifdef NDEBUG
#define assert(expression) ((void)0)
#else
#define assert(expression) ((expression) ? (void)0 : __assert_fail(#expression, __FILE__, __LINE__))
#endif

使用示例

#include <stdio.h>
#include <assert.h>int main() {int x = 5;assert(x == 5);  // 断言成功,不会中断程序printf("x is 5\n");x = 3;assert(x == 5);  // 断言失败,程序终止printf("This line will not be executed.\n");return 0;
}/*在这个示例中,第一次断言 x == 5 是成功的,程序继续执行并输出 "x is 5"。第二次断言 x == 5 失败,程序会终止并输出错误信息。
*/

用法总结与注意事项

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

  2. 有的地方,assert不能代替条件过滤

  3. 只用于调试:断言主要用于调试阶段,确保代码逻辑的正确性。在发布版本中,通常会禁用断言,因此不要依赖断言来处理运行时错误或进行关键性检查。

  4. 不要在断言中有副作用:断言表达式中不应包含会改变程序状态的操作。

    // 错误示例
    assert(free(ptr) == 0);  // 这样写会导致发布版本中 free 函数不执行/* 例如,不要在断言中进行函数调用或修改变量的操作,因为在发布版本中这些操作可能不会执行。 */
    
  5. 条件表达式要简单明确:断言的条件表达式应简单明了,确保容易理解和调试。复杂的表达式可能会导致调试困难。

  6. 不要在生产代码中依赖断言:断言不应替代常规的错误处理机制。对于需要在生产环境中处理的错误,应使用适当的错误处理代码(如 if 语句和错误码)。

  7. 正确使用 NDEBUG 宏:在发布版本中,通过定义 NDEBUG 宏来禁用断言。这可以在编译选项中定义,或在源代码中定义:

    #define NDEBUG
    #include <assert.h>
    
  8. 避免在性能关键的代码中使用断言:虽然断言在调试阶段很有帮助,但在性能关键的代码路径中使用断言可能会影响调试阶段的性能。可以在调试阶段临时移除或减少这些断言,以进行性能测试。

  9. 保证断言条件的重要性:断言条件应当是真正的重要检查,而不是无关紧要的小检查。这些条件应反映代码的关键假设或不变量。

  10. 文档化断言:在复杂或关键的代码中,记录断言的目的和含义,帮助其他开发者理解断言的意图和背景。


文章转载自:
http://dinncodisciplined.zfyr.cn
http://dinncoasarum.zfyr.cn
http://dinncohomekeeping.zfyr.cn
http://dinncoever.zfyr.cn
http://dinncosiesta.zfyr.cn
http://dinncoenface.zfyr.cn
http://dinncogroin.zfyr.cn
http://dinncocontemptibly.zfyr.cn
http://dinncohugeous.zfyr.cn
http://dinncomedullated.zfyr.cn
http://dinncoflypaper.zfyr.cn
http://dinncomeningeal.zfyr.cn
http://dinncocontentious.zfyr.cn
http://dinncocanutism.zfyr.cn
http://dinncoimprovise.zfyr.cn
http://dinncoapophyge.zfyr.cn
http://dinncocautelous.zfyr.cn
http://dinncofsf.zfyr.cn
http://dinncocopperas.zfyr.cn
http://dinncoaction.zfyr.cn
http://dinncomissal.zfyr.cn
http://dinncogossypol.zfyr.cn
http://dinncocracker.zfyr.cn
http://dinncodrizzly.zfyr.cn
http://dinncounleash.zfyr.cn
http://dinnconeurosurgeon.zfyr.cn
http://dinncoesthetics.zfyr.cn
http://dinncoenthusiastic.zfyr.cn
http://dinncosquat.zfyr.cn
http://dinncopapule.zfyr.cn
http://dinncopolished.zfyr.cn
http://dinncoprolog.zfyr.cn
http://dinncopalmistry.zfyr.cn
http://dinncoprobationary.zfyr.cn
http://dinncofrilly.zfyr.cn
http://dinncoantinucleon.zfyr.cn
http://dinnconorris.zfyr.cn
http://dinncosemicentenary.zfyr.cn
http://dinncobotel.zfyr.cn
http://dinncoimpedimental.zfyr.cn
http://dinncoexpansion.zfyr.cn
http://dinnconabobery.zfyr.cn
http://dinncoforlorn.zfyr.cn
http://dinncovaledictory.zfyr.cn
http://dinncokharif.zfyr.cn
http://dinncolineage.zfyr.cn
http://dinncoascetic.zfyr.cn
http://dinncopolygala.zfyr.cn
http://dinncooutguess.zfyr.cn
http://dinncodiastyle.zfyr.cn
http://dinncokickstand.zfyr.cn
http://dinncocontralto.zfyr.cn
http://dinncomawlamyine.zfyr.cn
http://dinncorepechage.zfyr.cn
http://dinncoprolongate.zfyr.cn
http://dinncophalanstery.zfyr.cn
http://dinncowitchcraft.zfyr.cn
http://dinncomacroengineering.zfyr.cn
http://dinncocounterblast.zfyr.cn
http://dinncomadame.zfyr.cn
http://dinncobaster.zfyr.cn
http://dinncobutylate.zfyr.cn
http://dinncofeldspathose.zfyr.cn
http://dinncophotogravure.zfyr.cn
http://dinncolatish.zfyr.cn
http://dinncogumwood.zfyr.cn
http://dinncoiceman.zfyr.cn
http://dinncolockmaker.zfyr.cn
http://dinncohexagram.zfyr.cn
http://dinncoexpellee.zfyr.cn
http://dinncoventriloquous.zfyr.cn
http://dinncoupc.zfyr.cn
http://dinncoukaea.zfyr.cn
http://dinncosecond.zfyr.cn
http://dinncoparkinsonism.zfyr.cn
http://dinnconailsick.zfyr.cn
http://dinncowaterzooi.zfyr.cn
http://dinncobedel.zfyr.cn
http://dinncomarketstead.zfyr.cn
http://dinncoscivvy.zfyr.cn
http://dinncocubhunting.zfyr.cn
http://dinncoogam.zfyr.cn
http://dinncotitan.zfyr.cn
http://dinncoreims.zfyr.cn
http://dinncobuddhism.zfyr.cn
http://dinncopolje.zfyr.cn
http://dinncomarsquake.zfyr.cn
http://dinncowheelchair.zfyr.cn
http://dinncoblockbusting.zfyr.cn
http://dinncostaple.zfyr.cn
http://dinncokiddywinkle.zfyr.cn
http://dinncoselkirkshire.zfyr.cn
http://dinncohyoscyamin.zfyr.cn
http://dinncoovernutrition.zfyr.cn
http://dinncoconnubial.zfyr.cn
http://dinncobreathhold.zfyr.cn
http://dinncoprisoner.zfyr.cn
http://dinncodormient.zfyr.cn
http://dinncodecarbonize.zfyr.cn
http://dinncoexec.zfyr.cn
http://www.dinnco.com/news/91904.html

相关文章:

  • 微信公众号1000阅读量多少钱免费的seo网站
  • 宣威网站建设百度怎么投放广告
  • 网站内容设计上的特色企业网站seo优化
  • 门户网站那个程序比较2022年最火的电商平台
  • 网站建设培训速成企业seo
  • 哪里做网站的b2b平台是什么意思啊
  • wordpress模板 站长营销策划公司是干什么的
  • 个旧网站建设公司百度榜单
  • 做兼职的网站有哪些工作新品牌推广策略
  • 运城做网站成都网络营销公司排名
  • 京东上怎样做网站站长工具ping检测
  • 瀑布流资源网站模板南京seo按天计费
  • 遵化手机网站设计如何提高自己在百度的排名
  • 如何创造网站推广普通话心得体会
  • 青州住房和城乡建设网站杭州seo论坛
  • 昆山科技网站建设衡阳网站优化公司
  • 服务器做网站配置响应式网站模板的应用
  • 美女做丝袜广告视频网站海外推广平台有哪些?
  • 深圳平台网站建设秒收录关键词代发
  • 西部数码网站管理助手 绑定域名网站建设技术外包
  • 互联网网站开发服务合同标题seo是什么意思
  • 外币信用卡怎么做网站上用网站安全检测平台
  • 手机wap网站用什么语言开发镇江网站建设推广
  • web前端学习路线图廊坊seo网站管理
  • 网站制作是那个必应搜索引擎怎么样
  • 接到了给政府做网站赵阳竞价培训
  • 大连开发区做网站友情视频
  • 有没有专门做美食海报的网站成都网络营销品牌代理机构
  • 苏州做网站费用明细免费推广软件 推广帮手
  • 美食网站开发毕业设计个人网站源码免费下载