”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何在C ++中实现\“ defer \”功能,而无需依赖STL或Boost库?

如何在C ++中实现\“ defer \”功能,而无需依赖STL或Boost库?

发布于2025-01-27
浏览:830

How can you implement a \在C中的“ defer”功能的自定义实现C中的“ defer”功能,在C中,“ defer”的概念涉及在最后执行特定动作特定范围或代码块。虽然STL(标准模板库)和BOOST库不提供此功能的内置实现,但可以使用以下代码段来创建自定义解决方案:

()() #endif // defer 使用:可以在特定范围内使用defer宏来定义当范围结束时将执行的代码块。语法如下:

defer { //将在当前范围末尾执行的代码 };

在下面的示例中,在read_entire_file函数中使用defer宏以自动关闭输入文件时,当函数出口:

#ifndef defer
struct defer_dummy {};
template  struct deferrer { F f; ~deferrer() { f(); } };
template  deferrer operator*(defer_dummy, F f) { return {f}; }
#define DEFER_(LINE) zz_defer##LINE
#define DEFER(LINE) DEFER_(LINE)
#define defer auto DEFER(__LINE__) = defer_dummy{} *[&]()
#endif // defer
语法上的简洁:

该语法被设计为易于读取和使用。可以包含任何有效的c语句或表达式。 local deferrer对象的名称以zz_开头,而不是_避免命名空间污染。

用户标识符不应从技术上开始。
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3