我很好奇能否在编译时确保在一个地方恰好调用一种方法。
请注意,如果多次(例如在循环中)调用函数是可以的-但不应在两个单独的循环中调用该函数。
这可以分为两部分,我也对涵盖这两个部分的解决方案感兴趣:
(a)确保在至少一个地方
调用方法(b)确保在一个地方最多调用方法
我对代码的结构拥有完全的控制权,欢迎实现相同想法的不同习惯用法。
// class.h
class MyClass {
public:
void my_method();
}
以下内容不应编译(从不调用)
#include "class.h"
int main() {
MyClass my_class;
}
以下内容不应编译(在多个位置调用)
#include "class.h"
int main() {
MyClass my_class;
my_class.my_method();
while(true) {
my_class.my_method();
}
}
以下应编译(恰好在一个地方调用):
#include "class.h"
int main() {
MyClass my_class;
while(true) {
my_class.my_method();
}
}
__COUNTER__宏来执行此操作。有点像static_assert(__COUNTER__ == 0); my_class.my_method();。但是,计数器会在每个翻译单元中重置,因此您只能检查每个翻译单元是否调用了该功能。