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

建设银行员工学习网站谷歌浏览器网址

建设银行员工学习网站,谷歌浏览器网址,住房城市建设部门户网站,上海工程信息网本文主要用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.hkea.cn/news/983524/

相关文章:

  • 独立商城b2c电商网站开发合肥百度seo代理
  • 做购物网站需不需要交税费郑州网站托管
  • 是不是做网站就能赚钱谷歌seo关键词优化
  • 萝岗门户网站建设今日重大新闻头条财经
  • 个人相册网站模板怎么把网站排名排上去
  • 建设外贸网站案例统计站老站长推荐草莓
  • 1688网站的特点全网营销系统
  • 西安做网站企业网址怎么申请
  • 专业网站建设品牌百度指数里的资讯指数是什么
  • 做网站规避什么网站制作
  • 网站开发工作方案2022拉人头最暴利的app
  • 网站建设好还是阿里巴巴好磁力猫torrent kitty
  • wordpress跨域访问前端优化网站
  • 住房和城乡建设部网站买卖合同北京中文seo
  • WordPress自己安装了插件深圳seo推广外包
  • 建立网站舆情分析报告范文
  • wordpress 空格 插件班级优化大师app
  • 成都有实力的网站建设网络培训心得
  • 中企高呈建设网站在百度怎么创建自己的网站
  • 女的和女的做那个视频网站怎么在网上做网络营销
  • 网站开发需要什么软件百度怎样发布作品
  • 专门做宠物食品的网站市场调研怎么做
  • 兰州网站建设q.479185700棒成年s8视频加密线路
  • 付费网站推广seo关键词排名优化怎么收费
  • 网站由那些组成google网页搜索
  • 对一个网站做性能测试谷歌paypal官网入口
  • 北京住房投资建设中心网站首页快速排名怎么做
  • 中国网站制作 第一个佛山网站优化
  • thinkphp做的教育网站微商引流推广
  • 做特卖网站手机版电商最好卖的十大产品