मैं (कार्यकुशलता के लिए अपने सॉफ़्टवेयर के लिए एक कोड पीढ़ी के पीछे के अंत के रूप में LLVM उपयोग करने के लिए कोशिश कर रहा हूँ और सिर्फ महसूस किया कि LLVM C++ अपवाद से निपटने के लिए समर्थन के बिना संकलित किया गया था)। मेरे सॉफ़्टवेयर में, हालांकि, मैं अपवाद हैंडलिंग का व्यापक रूप से उपयोग करता हूं।कोड के साथ लिंक करना है कि अपवाद को संभालने का समर्थन नहीं करता (सी ++/LLVM)
यदि मैं अपने सभी कॉलबैक फ़ंक्शंस को ट्राइक-कैच-ब्लॉक में लपेटता हूं (ताकि कोई अपवाद को एलएलवीएम कोड के माध्यम से "प्रचारित करने की आवश्यकता न हो), तो क्या मैं सुरक्षित रूप से" -फनो-अपवाद "(जीसीसी के लिए) को हटा सकता हूं। मेरे लिंकर झंडे से? (यह ध्वज आमतौर पर llvm से लिंक करते समय आवश्यक होता है, क्योंकि llvm-config --cxxflags
करते समय यह चालू हो जाता है)।
यदि नहीं, तो स्थिति परिवर्तन अगर मैं कार्यों "फेंकता है()" के साथ घोषित साथ LLVM कार्यों लपेट करता है? इन कार्यों के कार्यान्वयन को -फनो-अपवादों के साथ संकलित किया जा सकता है।
मैं एबीआई की स्थिरता पर शर्त नहीं लगाऊंगा, लेकिन कौन जानता है? अपवाद सक्षम के साथ स्वयं को एलएलवीएम संकलित करना आसान और सुरक्षित हो सकता है। – delnan
@delnan संकलन llvm एक विकल्प नहीं है। मेरे सॉफ़्टवेयर का उपयोग विभिन्न प्लेटफ़ॉर्म (लिनक्स, मैक, विंडोज़) पर कई लोगों द्वारा किया जाता है और मुझे आपको डिफ़ॉल्ट llvm स्थापना पर भरोसा करने की आवश्यकता होती है जो आपको मिलता है। apt-get से। – Joel
@ डेलनान: मुझे एबीआई संगतता के बारे में बहुत कुछ पता नहीं है, लेकिन अगर मैं फेंकने के साथ फंसे घोषित करता हूं तो क्या मैं इसे इस मामले में प्राप्त करूंगा? मैंने तदनुसार सवाल संशोधित किया। – Joel