क्यों इतने सारे पुस्तकालयों को परिभाषित अपने स्वयं निश्चित चौड़ाई integers?

0

सवाल

के बाद से कम से कम सी++11 हम सुंदर निश्चित चौड़ाई integers उदाहरण के लिए C++में's <cstdint> या सी है <stdint.h> बाहर के बॉक्स में, (उदाहरण के लिए std::uint32_t, std::int8_tहै ), तो के साथ या बिना std:: उनके सामने और यहां तक कि के रूप में मैक्रो के लिए न्यूनतम चौड़ाई (INT16_C, UINT32_C और इतने पर).

अभी तक हम क्या है के साथ सौदा पुस्तकालयों, हर दिन को परिभाषित है कि अपनी खुद की तय चौड़ाई integers और आप देखा हो सकता है, उदाहरण के लिए sf::Int32, quint32, boost::uint32_t, Ogre::uint32, ImS32, ... मैं और पर जा सकते हैं अगर आप चाहते हैं मुझे करने के लिए. आप भी कुछ पता है, शायद और अधिक.

कभी कभी इन typedefs (भी अक्सर मैक्रो परिभाषाएँ) के लिए नेतृत्व कर सकते संघर्ष उदाहरण के लिए, जब आप चाहते हैं पारित करने के लिए एक std निश्चित चौड़ाई, पूर्णांक के लिए एक समारोह से एक पुस्तकालय की उम्मीद एक निश्चित चौड़ाई, पूर्णांक के साथ वास्तव में एक ही चौड़ाई है, लेकिन अलग ढंग से परिभाषित किया.

के बिंदु तय की चौड़ाई integers है उन्हें एक निश्चित आकार है, जो है क्या हम की जरूरत है कई स्थितियों में आप के रूप में जानते हैं. तो क्यों इन सभी पुस्तकालयों के बारे में जाने और typedef वास्तव में एक ही integers हम पहले से ही है में C++ मानक? उन अतिरिक्त परिभाषित कर रहे हैं कभी कभी भ्रामक है, बेमानी हो सकता है और अपने आक्रमण codebase, जो बहुत बुरा कर रहे हैं बातें. और यदि वे नहीं है, चौड़ाई और signedness वे वादा करने के लिए है, वे कम से कम पाप के सिद्धांत के खिलाफ कम से कम विस्मय, तो क्या उनकी बात मैं इसके द्वारा आप से पूछना?

c++ fixed-width integer
2021-11-23 14:45:24
1

सबसे अच्छा जवाब

5

क्यों इतने सारे पुस्तकालयों को परिभाषित अपने स्वयं निश्चित चौड़ाई integers?

शायद के लिए कारणों में से कुछ नीचे दिए गए:

  • वे शुरू कर दिया इससे पहले कि C++11 या C11 (उदाहरण: GTK, क्यूटीपुस्तकालयों आंतरिक करने के लिए जीसीसी, को बढ़ावा देने, FLTK, GTKmm, Jsoncpp, Eigen, Dlib, OpenCV, Wt)

  • वे चाहते हैं के लिए पठनीय कोड के भीतर, अपने स्वयं के namespace या class (अपने स्वयं के नाम की तरह, क्यूटी करता है, हो सकता है की पठनीयता में सुधार अच्छी तरह से लिखा कोड के साथ).

  • वे का निर्माण कर रहे हैं-विन्यास समय (उदाहरण के लिए के साथ जीएनयू autoconf).

  • वे चाहते हैं होना करने के लिए compilable के साथ C++ compilers (उदाहरण के लिए, कुछ सी++03 में से एक)

  • वे चाहते हैं होना करने के लिए पार compilable के लिए सस्ते एम्बेडेड माइक्रोकंट्रोलर जिसका संकलक नहीं है एक पूरा सी++11 संकलक.

  • हो सकता है वे जेनेरिक कोड (या template-s, में उदाहरण के लिए Eigen या Dlib) के लिए शायद समर्थन मनमाना परिशुद्धता गणित (या bignums) शायद का उपयोग कर GMPlib.

  • वे चाहते हैं होना करने के लिए किसी भी तरह साध्य के साथ Frama-सी है या क्या-178C प्रमाणित (एम्बेडेड महत्वपूर्ण सॉफ्टवेयर सिस्टम)

  • वे कर रहे हैं प्रोसेसर विशिष्ट (जैसे asmjit उत्पन्न करता है जो मशीन कोड क्रम में एक ही आर्किटेक्चर)

  • वे हो सकता है इंटरफ़ेस करने के लिए विशिष्ट हार्डवेयर या प्रोग्रामिंग भाषाओं ( ... बदलेगी देश, OpenCL, Cuda).

  • वे चाहते हैं करने के लिए प्रयोग करने योग्य होने से अजगर या जीएनयू छल.

  • वे हो सकता है ऑपरेटिंग सिस्टम विशिष्ट है.

  • वे कुछ जोड़ें अतिरिक्त रनटाइम जाँच करता है, जैसे विभाजन के खिलाफ 0 (या अन्य अपरिभाषित व्यवहार) या अतिप्रवाह (है कि C++ मानक नहीं की आवश्यकता होती है, प्रदर्शन के लिए या ऐतिहासिक कारणों के लिए)

  • वे इरादा कर रहे हैं होना करने के लिए आसानी से प्रयोग करने योग्य मशीन जनित C++ कोड (जैसे RefPerSys, ANTLR, ...)

  • वे कर रहे हैं बनाया जा करने के लिए प्रतिदेय से सी कोड (जैसे libgccjit).

  • आदि... ढूँढने अन्य अच्छे कारणों के लिए छोड़ दिया है के रूप में एक व्यायाम करने के लिए पाठक.

2021-11-24 08:35:11

ठीक है, आप जीतने के लिए । मैं हूँ बंद रोलिंग अपनी आँखें हर बार जब मैं एक देखते हैं.
nada

मैं इतना है कि कोड से मेल खाते की पहली बुलेट बिंदु में यह मजाक नहीं है.
user4581301

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में