Sejak C ++ 17 seseorang dapat menulis if
blok yang akan dieksekusi persis seperti ini:
#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;
}
}
}
Saya tahu saya mungkin terlalu memikirkan ini, dan ada cara lain untuk menyelesaikannya, tetapi tetap - apakah mungkin untuk menulis ini dengan cara seperti ini, jadi tidak perlu do_once = false
bagian akhir?
if (DO_ONCE) {
// Do stuff
}
Saya sedang memikirkan fungsi pembantu do_once()
,, berisi static bool do_once
, tetapi bagaimana jika saya ingin menggunakan fungsi yang sama di tempat yang berbeda? Mungkinkah ini waktu dan tempat untuk #define
? Saya harap tidak.
if (i == 0)
? Cukup jelas.