เนื่องจาก 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
? ฉันหวังว่าจะไม่
if (i == 0)
? มันชัดเจนเพียงพอ