C++、RAII、GSL 与 Linux/Unix 系统编程基础
1. GSL 实用工具
GSL(Guidelines Support Library)提供了一些实用工具,有助于创建更可靠、易读的代码。
1.1 gsl::finally{} API
gsl::finally{} 通过利用 C++ 析构函数,提供了一种在函数退出前执行代码的简单方法。这在函数退出前需要执行清理操作时非常有用。尤其在存在异常的情况下, gsl::finally{} 最为实用,因为异常发生时,清理代码往往会被遗忘,导致清理逻辑无法执行。而 gsl::finally{} API 只要在可能引发异常的操作之前定义,即使发生异常也会始终执行。
以下是使用示例:
#define concat1(a,b) a ## b
#define concat2(a,b) concat1(a,b)
#define ___ concat2(dont_care, __COUNTER__)
#include <gsl/gsl>
#include <iostream>
int main(void)
{
auto ___ = gsl::finally([]{
std::cout << "Hello World\n";
});
}
// > g++ scratchpad.cpp; ./a.out
// Hello World
代码中还包含一
超级会员免费看
订阅专栏 解锁全文
90

被折叠的 条评论
为什么被折叠?



