컴파일 타임에 메소드가 정확히 한 곳에서 호출되는지 확인할 수 있는지 궁금합니다.
함수가 두 번 이상 (예 : 루프에서) 호출되면 괜찮지 만 두 개의 개별 루프에서 호출해서는 안됩니다.
이것은 두 부분으로 나눌 수 있습니다, 나는 또한 중 일부를 커버 솔루션에 관심이 있어요 :
(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();. 그러나 각 변환 단위에서 카운터가 재설정되므로 변환 단위당 한 번만 함수가 호출되는지 확인할 수 있습니다.