मैंने थोड़ा शीर्षक बदल दिया है क्योंकि मैंने सोचा कि यह अधिक उचित सवाल है।सी ++, क्या यह गोटो स्टेटमेंट जरूरी है?
क्या आप इसे पुन: सक्रिय करेंगे (गोटो के वैध उपयोग की तरह लगता है)? यदि, आप कथन पर जाने के लिए निम्न कोड को कैसे दोबारा प्रतिक्रिया देंगे?
if (data.device) {
try {
...
}
catch(const std::exception&) { goto done; }
... // more things which should not be caught
done: ;
}
पूरा बयान
#ifdef HAVE_GPU
// attempt to use GPU device
if (data.device) {
try {
Integral::Gpu eri(S, R, Q, block.shell());
eri(basis.centers(), quartets, data.device);
}
// if GPU fails, propagate to cpu
catch(std::exception) { goto done; }
data.device += size;
host_index.extend(block_index);
block_index.data.clear();
done: ;
}
#endif
धन्यवाद
के बाद सबसे की वरीयता को देखा है, मैं ध्वज के साथ जाने का फैसला किया है, लेकिन श्री यॉर्क में टिप्पणी के साथ।
धन्यवाद हर कोई
ब्लॉक में क्या देखे बिना मुश्किल कहना है, लेकिन एक और संभावना है कि कोड को किसी फ़ंक्शन में स्थानांतरित करना है। (शायद पठनीयता में भी सुधार हो सकता है, शायद नहीं।) तो अगर कुछ बुरा हुआ तो आप जल्दी ही वापस आ सकते हैं। – GManNickG
कृपया कॉन्स्ट संदर्भ द्वारा पकड़ें, कृपया। –
@GMan ने पूरा बयान जोड़ा। फंक्शन अधिक हो सकता है, क्योंकि कोई बंद नहीं है। – Anycorn