gpt4 book ai didi

c++ - 如何检测正确的函数调用对

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:50 26 4
gpt4 key购买 nike

我正在寻找一种能够以嵌套方式检测有序函数调用对的工具,如下所示:

f()   // depth 0
f() //depth 1
g()
g()

在调用f() 的每个深度,必须有一个调用g() 形成函数调用对。这在进入和退出临界区时尤为重要。

最佳答案

在 C++ 中,一种选择是将对 f()g() 的调用包装在类的构造函数和析构函数中,并且仅通过实例化来调用这些函数该类的一个实例。例如,

struct FAndGCaller
{
FAndGCaller() { f(); }
~FAndGCaller() { g(); }
};

然后可以像这样在任何作用域 block 中使用它:

{
FAndGCaller call_f_then_later_g; // calls f()

} // calls g()

很明显,在实际代码中,您希望更恰本地命名事物,而且通常您只想拥有 f()g() 的内容在构造函数和析构函数体中,而不是在单独的函数中。

Scope Bound Resource Management(SBRM,或更通常称为 Resource Acquisition is Initialization,RAII)的这个习语很常见。

关于c++ - 如何检测正确的函数调用对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480614/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com