检查这是否是函数的最后一次调用



基本上我想要的是与std::call_once相反的,我需要一些代码,例如在函数foo内部,只在foo的最后调用时运行,最好没有某种惰性调用机制。

void foo()
{
    ...
    if( magic )
       do stuff
}
foo();
foo();
foo(); // magic will only be true here

这样的事情可能吗?

这个魔法就是魔法,在这个世界上是不可能的。

然而,我猜,你的问题是如何做所需的清理,这是可能的。我能想到的至少有三种不同的机制:

  1. atexit()注册一个清理处理程序

  2. __attribute__((destructor))定义函数

  3. 把你的清理放到类的析构函数中,并创建该类的静态对象

不,不可能。确定没有人会再次调用foo的唯一方法是a)解决停止问题b)在程序终止时调用foo。

最新更新