2011-06-12 6 views
14

fenv.h के लिए प्रलेखन (मानकों में) बल्कि भ्रमित है, लेकिन मैं विशेष रूप से feholdexcept और फ़्लोटिंग पॉइंट अपवाद के लिए "गैर-स्टॉप मोड" की अवधारणा के बारे में उलझन में हूं। जहां तक ​​मैं कह सकता हूं, किसी भी आईईईई फ्लोटिंग पॉइंट कार्यान्वयन पर, अपवाद डिफ़ॉल्ट रूप से गैर-सिग्नलिंग/"नॉन-स्टॉप" होते हैं, और fenv.h इंटरफेस सिग्नलिंग मोड को सक्षम करने के लिए कोई तरीका नहीं प्रदान करते हैं जब तक यह डिफ़ॉल्ट नहीं होता है। क्या गैर-आईईईई सिस्टम या सिग्नलिंग अपवाद मास्क सेट करने के लिए गैर-मानक एक्सटेंशन वाले सिस्टम को छोड़कर feholdexcept बेकार की पूरी अवधारणा है?Feholdexcept आदि का उपयोग क्या है?

उत्तर

6

मान लीजिए कि आप किसी लाइब्रेरी लागू कर रहे हैं, और आप अपने कॉल करने के लिए अपने कोड कॉल करने से पहले फ्लोटिंग प्वाइंट पर्यावरण क्या कर सकता बारे में कुछ भी पता नहीं है। वे एक अपवाद बेनकाब, और एक कस्टम जाल हैंडलर कि कारण बनता विभाजन-दर-शून्य मान 42 का निर्माण करने के मान लीजिए कि आपकी लायब्रेरी विभाजन-दर-शून्य के लिए डिफ़ॉल्ट आईईईई-754 व्यवहार होने पर निर्भर करता है स्थापित हो सकता है। feholdexcept फ़ंक्शन आपको इस व्यवहार को लागू करने का माध्यम देता है। फोन करने वाले का वातावरण, उनके बेनकाब अपवाद के साथ पूरा हो गया है, तो fesetenv समारोह का उपयोग कर बहाल किया जा सकता।

यह बेशक उपयोग के एक काफी अस्पष्ट कोने मामला है, लेकिन स्पष्ट रूप से सब कुछfenv.h में काफी सबसे प्रोग्रामर के लिए अस्पष्ट है।

+0

मानक लाइब्रेरी के लिए, जब तक अन्यथा दस्तावेज नहीं किया जाता है, तब तक सभी कार्यों को डिफॉल्ट फ़्लोटिंग पॉइंट पर्यावरण में विनिर्देश के अनुसार व्यवहार करने की आवश्यकता होती है, मुझे लगता है कि यह तीसरे पक्ष के लाइब्रेरी लेखकों के लिए बोझ डालने के लिए बहुत उचित होगा कॉलिंग आवेदन पर। खासकर जब से 'fe * 'फ़ंक्शंस का कोई भी उपयोग कंप्रेसर को ट्रिगर कर सकता है (यद्यपि जीसीसी नहीं ...) फ्लोटिंग पॉइंट ऑप्टिमाइज़ेशन को छोड़ने के लिए जो अपवाद खोने का कारण बन सकता है ... –

+0

@R ..:' ' फ़ंक्शन आम तौर पर होते हैं कुछ डिजाइन और दस्तावेज़ीकरण में कुछ हद तक कमी है। मैं अब तक कहूंगा कि वे सी पुस्तकालय की सबसे कमजोर विशेषता हो सकती हैं। यदि आपके पास सुधार के लिए कोई सुझाव है, तो मुझे उन्हें सी फ्लोटिंग-पॉइंट वर्किंग ग्रुप में पास करने में खुशी होगी। –