Vì C ++ 17, người ta có thể viết một if
khối sẽ được thực thi chính xác một lần như thế này:
#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;
}
}
}
Tôi biết tôi có thể đang xem xét lại điều này, và có nhiều cách khác để giải quyết vấn đề này, nhưng vẫn có thể viết điều này bằng cách nào đó như thế này, vì vậy do_once = false
cuối cùng không cần đến nó?
if (DO_ONCE) {
// Do stuff
}
Tôi đang nghĩ một chức năng của trình trợ giúp do_once()
, có chứa static bool do_once
, nhưng nếu tôi muốn sử dụng cùng chức năng đó ở những nơi khác nhau thì sao? Đây có thể là thời gian và địa điểm cho một #define
? Tôi hy vọng là không.
std::call_once
là một tùy chọn (nó được sử dụng để xâu chuỗi, nhưng nó vẫn hoạt động).
if
điều kiện có thể static
. Thật khéo léo.
if (i == 0)
? Nó đủ rõ ràng.