基本上我想要的是std::call_once的反面,我需要有一些代码,例如在函数foo
内,只在foo的最后一次调用时运行,最好没有某种懒惰呼叫机制。
void foo()
{
...
if( magic )
do stuff
}
foo();
foo();
foo(); // magic will only be true here
这样的事情可能吗?
答案 0 :(得分:2)
这种魔法将是神奇的,在这个世界上是不可能的。
但是,我想,你的问题是如何进行必要的清理,这是可能的。我能想到至少有三种不同的机制:
使用atexit()
注册清理处理程序。
使用__attribute__((destructor))
定义一个函数。
将清理放在类的析构函数中,并创建该类的静态对象。
答案 1 :(得分:1)
foo
的唯一方法是a)解决暂停问题b)在程序终止时调用foo。