我有一个计时器类,用于计算代码块的执行时间。基本上是这样的:
timer.start();
////do something
timer.end();
我正在寻找一种编译时的方法,以确保开始调用和结束调用都存在并处于范围内。即使是hacky的方法也可以。
这里有一个例子... 由于隐藏变量“foo”的初始化方式,如果没有调用“start()”而调用“end()”,则会生成编译时错误。
#define start_macro bool foo = false; timer.start();
#define end_macro foo = true; timer.end();
//start_macro
////do something
end_macro //generates error because start_macro not called, thus foo not declared
但是显然,如果未调用 end() 函数,该方法的应用是有限的,因为它不会产生错误。
是否有任何聪明的方法可以在编译时确保两个函数按顺序且在范围内被调用? 我不感兴趣运行时检查的方法……我希望有一种更快的方法来捕获缺少的调用。
lock_guard
等标准类的想法相同。 - Shawn