चूंकि 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)
? यह काफी स्पष्ट है।