因为 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
}
我考虑使用一个包含 static bool do_once
的 helper 函数 do_once()
,但是如果我想在不同的地方使用同一个函数会怎么样呢?现在是做 #define
的时间和地点吗?希望不是。