C ++ 17부터 if
다음과 같이 정확히 한 번만 실행될 블록을 작성할 수 있습니다 .
#include <iostream>
int main() {
for (unsigned i = 0; i < 10; ++i) {
if (static bool do_once = true; do_once) { // Enter only once
std::cout << "hello one-shot" << std::endl;
// Possibly much more code
do_once = false;
}
}
}
나는 이것을 지나치게 생각할 수도 있고 이것을 해결할 다른 방법이 있지만 여전히-어떻게 든 이것을 쓸 수 do_once = false
있습니까? 그래서 결국에는 필요가 없습니까?
if (DO_ONCE) {
// Do stuff
}
를 do_once()
포함 하는 도우미 함수를 생각하고 static bool do_once
있지만 다른 위치에서 동일한 함수를 사용하려면 어떻게해야합니까? 이 시간과 장소가 될 수 #define
있을까요? 내가하지 희망.
std::call_once
옵션 일 수도 있습니다 (스레딩에 사용되지만 여전히 작동합니다).
if
조건 에서 초기화 된 변수 가 될 수 있다는 것은 나에게 발생하지 않았습니다 static
. 영리 해요
if (i == 0)
? 충분합니다.