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

17zwd一起做网站普宁长沙百度百科

17zwd一起做网站普宁,长沙百度百科,手工艺品外贸公司网站建设方案,做代理网站本文主要用C11标准来实现Golang的defer功能。 背景 目前笔者的主力语言是Golang,其次是C,再次是JS、Delphi。在Golang工程中大量使用了defer关键字实现函数的延迟调用。如打开文件的出错处理。近来在C工程中遇到类似需求,在函数返回时进行某…

本文主要用C++11标准来实现Golang的defer功能。

背景

目前笔者的主力语言是Golang,其次是C++,再次是JS、Delphi。在Golang工程中大量使用了defer关键字实现函数的延迟调用。如打开文件的出错处理。近来在C++工程中遇到类似需求,在函数返回时进行某次处理,但函数返回的地方较多,如在返回之前一一写上,略稍麻烦,幸好早有人实现了。

实现

网上的实现方法有很多种,这篇文章中的方法是比较简洁的。代码量不多,就直接抄录在此:

/*https://www.gingerbill.org/article/2015/08/19/defer-in-cpp/
使用:
defer ({printf("defer 0000\n");
});defer (foobar());c++11及以上标准*/#ifndef _MYHEAD_H
#define _MYHEAD_Htemplate <typename F>
struct privDefer {F f;privDefer(F f) : f(f) {}~privDefer() { f(); }
};template <typename F>
privDefer<F> defer_func(F f) {return privDefer<F>(f);
}#define DEFER_1(x, y) x##y
#define DEFER_2(x, y) DEFER_1(x, y)
#define DEFER_3(x)    DEFER_2(x, __COUNTER__)
#define mydefer(code)   auto DEFER_3(_defer_) = defer_func([&](){code;})#endif

调用代码片段如下:

void defer_func()
{printf("goodbye\n");
}void defer_test()
{mydefer ({printf("mydefer 0000\n");});mydefer ({printf("mydefer 11111\n");printf("mydefer 22222\n");});mydefer (defer_func());
}

编译示例:

g++ -std=c++1y -Wall main.cpp 

输出结果如下:

goodbye
mydefer 11111
mydefer 22222
mydefer 0000

小结

作为业务使用者,本着拿来主义的精神,直接上述代码就能实现功能。限于精力,不再深入研究C++的特性。

http://www.tj-hxxt.cn/news/108774.html

相关文章:

  • dw手机销售网站制作网站seo源码
  • 苏州做网站优化seo值怎么提高
  • 网站开发在网页插入音频怎么样引流顾客到店方法
  • 贵州省住房和城乡建设厅网站seo推广
  • 网站建设公司图片东莞seo报价
  • 想做个电影网站该怎么做百度销售平台怎样联系
  • 昆明疫情最新消息今天苏州优化收费
  • 怎么做网站广告位网站推广的途径和方法
  • 怎么给网站做https永久免费无代码开发平台网站
  • 石家庄网站建设招商自助建站系统个人网站
  • 东莞网站关键词优化公司厦门seo服务
  • 怎么开通自己的微信公众号seo网站优化培训多少价格
  • 聊城网站推广的公司关键词排名优化公司地址
  • 党政廉风建设网站太原seo培训
  • 做ar的网站图片扫一扫在线识别照片
  • 做网站上哪买空间seo域名如何优化
  • 哪里有做网站服务电子商务平台建设
  • 网站建设员招聘网站搜索引擎优化的基本内容
  • 二手购物网站建设方案北京aso优化
  • wordpress 酒seo排名点击器曝光行者seo
  • 按摩养生网站建设百度搜索引擎广告位的投放
  • 创建软件网站网站自然排名优化
  • 网站建设套餐电话极速建站网站模板
  • 做网站找俊义 合优网络推广工作好做不
  • 什么网站做免单衣服在线网页制作系统搭建
  • 做二手房又做网站的网络热词排行榜
  • 网站建设职位优化的概念
  • 济宁网站建设常用解决方案自己开平台怎么弄啊
  • 北京网站优化常识seo网站课程
  • 一级a做爰片不卡免费网站中国十大教育培训机构有哪些