C ++ 17 beri if
tam olarak böyle bir kez yürütülecek bir blok yazabilirsiniz :
#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;
}
}
}
Bunu düşünüyor olabileceğimi biliyorum, ve bunu çözmenin başka yolları da var, ama yine de - bunu böyle bir şekilde yazmak mümkün do_once = false
mü , bu yüzden sonunda buna gerek yok mu?
if (DO_ONCE) {
// Do stuff
}
Yardımcı bir işlev düşünüyorum do_once()
, içeren static bool do_once
, ama ya aynı işlevi farklı yerlerde kullanmak istersem? Bu bir zaman ve yer olabilir #define
mi? Umarım değildir.
std::call_once
bir seçenektir (diş açma için kullanılır, ancak yine de işidir).
if
koşulda başlatılan değişkenlerin olabileceği aklıma gelmedi static
. Zekice.
if (i == 0)
? Yeterince açık.