मेरे पास एक ओपन-सोर्स कोडबेस है जो सी और सी ++ दोनों में लिखा गया है। मैं एक पूर्णांक प्रकार की तलाश में हूं जो कम से कम 64 बिट्स चौड़ा होने की गारंटी है, जिसे बिना ओएस एक्स (इंटेल, 64-बिट) और लिनक्स बॉक्स पर ओपन-सोर्स सी और सी ++ कंपाइलर्स के साथ विश्वसनीय रूप से संकलित किया जा सकता है अंतिम उपयोगकर्ता के हिस्से पर बहुत अधिक अतिरिक्त काम। इस समय विंडोज और 32-बिट क्लाइंट समर्थन महत्वपूर्ण नहीं हैं।क्या मुझे पोर्टेबल कोड के लिए लंबे समय तक या int64_t का उपयोग करना चाहिए?
मैंने ओएस एक्स पर कुछ परीक्षण किया, और नवीनतम जीसीसी जो डेवलपर टूल के साथ जहाज सी + 11 मोड का समर्थन नहीं करता है (और इसलिए long long
की उपलब्धता की गारंटी नहीं है)। क्लेंग इसका समर्थन नहीं करता है, या तो यह एक निश्चित संस्करण के बाद, C99 मोड सक्षम होने पर long long
का समर्थन करता है।
के स्थान पर int64_t
का उपयोग करने के लिए सामान्य सुझाव है, जब पोर्टेबिलिटी एक महत्वपूर्ण लक्ष्य है? प्रारूप विनिर्देशकों का उपयोग दर्दनाक लगता है।
मैं मज़बूती से एक int64_t
long long
करने के लिए (और इसी तरह unsigned
uint64_t
साथ बराबर करने के लिए) मौजूदा कार्य करता है और पुस्तकालयों कि long long
पैरामीटर के रूप में लेने के साथ इसका इस्तेमाल करने डाली कर सकते हैं? (और फिर से, फिर से।)
दिमाग के उस फ्रेम में, यदि मैं कोड भेजता हूं जिसके लिए क्लैंक कार्यक्षमता जीसीसी में नहीं है, तो क्या क्लैंग जीसीसी को लिनक्स पर पसंद के कंपाइलर के रूप में बदलने जा रहा है? क्या वह कंपाइलर कुछ है जो मैं उम्मीद कर सकता हूं, अधिकांश भाग के लिए, उपयोगकर्ताओं को समाप्त करने के लिए स्रोत कोड की पेशकश करते समय?
असल में, मैं उन अन्य डेवलपर्स से कुछ सलाह मांगना चाहता हूं जिन्होंने पोर्टेबल सी और सी ++ कोड के लिए दोनों प्रकार का उपयोग किया है, जिनके पास कुछ सुझाव हो सकते हैं कि जाने के लिए बेहतर दीर्घकालिक तरीका क्या हो सकता है दिमाग में लक्ष्य से ऊपर।
जीसीसी में सी ++ 11 से पहले विस्तार के रूप में 'लंबा लंबा' था, इसलिए जब तक आप जीसीसी-एक्सटेंशन को अक्षम नहीं करते हैं, तो आपको जीसीसी पर 'लंबे समय तक' का उपयोग करने के साथ ठीक होना चाहिए (वास्तव में मुझे नहीं लगता मैंने एक कंपाइलर का उपयोग/देखा है जो लंबे समय तक लंबे समय तक नहीं पेश करता है)। – Grizzly
ध्यान दें कि 'int64_t' में अंतर्निहित प्रकार' लंबा 'या' लंबा लंबा 'हो सकता है, जो ओवरलोडिंग की आवश्यकता होने पर पोर्टेबिलिटी समस्याओं का कारण बन सकता है। –
प्लेटफ़ॉर्म से प्लेटफ़ॉर्म तक आसान परिवर्तन करने के लिए टाइपपीफ पर भी विचार करें। – imallett