6

कुछ सिस्टम डबल पर लंबे समय तक डबल होते हैं। मैं कैसे पता लगा सकता हूं कि संकलित समय पर डबल की तुलना में लंबे समय तक विस्तारित परिशुद्धता का लंबा डबल है और इसे सशर्त संकलन में उपयोग करें।यह पता लगाने के लिए कि लंबा डबल विस्तारित परिशुद्धता का है या संकलन समय पर नहीं

मैं पूर्वनिर्धारित libgcc में मौजूद मैक्रो SIZEOF_DOUBLE और SIZEOF_LONG_DOUBLE देखते हैं लेकिन वहाँ विभिन्न toolchains भर में पोर्टेबल नहीं कर रहे हैं।

क्या ऐसा करने का कोई तरीका है?

+0

आप 'आकार (डबल)> 8' का प्रयास कर सकते हैं। हालांकि पोर्टेबल नहीं है, फिर भी यह ज्यादातर मामलों में अभी भी काम करेगा। – Mysticial

+0

क्या आप 'sizeof (double)

+2

प्रीप्रोसेसर 'आकार' को पहचानता नहीं है। –

उत्तर

5

आप और LDBL_MANT_DIGfloat.h से तुलना कर सकते हैं।

1

आप उदाहरण का परीक्षण कर सकते हैं

#if DBL_MANT_DIG < LDBL_MANT_DIG 

या इसी तरह के मूल्यों float.h

0

इस समस्या (के रूप में कई परियोजनाओं द्वारा प्रयुक्त) के लिए 'सही' समाधान में परिभाषित एक कॉन्फ़िगर स्क्रिप्ट बनाने के लिए है।

कॉन्फ़िगरेशन स्क्रिप्ट विभिन्न परीक्षण चलाती है जिसमें संकलक और सिस्टम गुणों को निर्धारित करने के लिए छोटे प्रोग्रामों को संकलित और चलाया जाता है। स्क्रिप्ट तब हेडर फ़ाइल, या मेकफ़ाइल, या दोनों के रूप में इसके निष्कर्ष लिखती है। बेशक, आप अपनी पसंद की कुछ भी कर सकते हैं।

इस तरह की चीज अर्द्ध स्वचालित रूप से करने के लिए कुछ टूल हैं, लेकिन वे शायद आपके लिए अधिक हैं। यदि आप एक नाम देखना चाहते हैं तो नाम autoconf और automake हैं। सावधान रहें, वे सीखना आसान नहीं हैं, लेकिन वे कॉन्फ़िगर स्क्रिप्ट और मेकफ़ाइल उत्पन्न करते हैं जिन्हें किसी भी प्लेटफ़ॉर्म पर तब तक काम करना चाहिए जब तक कि इसमें यूनिक्स-स्टाइल शैल हो और जीएनयू बना।

संबंधित मुद्दे

 संबंधित मुद्दे