由于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
吗?我希望不是。
std::call_once
是一个选择(它用于线程化,但仍能完成工作)。
if
条件中初始化的变量可能不是static
。那很聪明。
if (i == 0)
呢?很清楚。