मेरा सुझाव है कि यह इस तरह uint8_t
और int8_t
रूप C99<stdint.h>
हैडर प्रकार का उपयोग अपने संकलक का समर्थन करता है।
यदि आपका कंपाइलर इसका समर्थन नहीं करता है, तो एक बनाएं। Here'sवीसी ++ के लिए एक उदाहरण, जिसमें पुराने संस्करण stdint.h
नहीं हैं। जीसीसीstdint.h
वास्तव में की अपने सुझाव के साथ C99
एक समस्या यह है सबसे कि char
के हस्ताक्षर, कार्यान्वयन परिभाषित किया गया है, इसलिए यदि आप एक प्रकार उर्फ बना सकता है का समर्थन करता है, और। आपको कम से कम संकेत के बारे में स्पष्ट होना चाहिए। इस विचार में कुछ योग्यता है क्योंकि सी # उदाहरण के लिए char
16 बिट है। लेकिन इसमें एक बाइट प्रकार भी है।
अतिरिक्त नोट ...
अपने सुझाव के साथ कोई समस्या नहीं था, तो आप वास्तव में अहस्ताक्षरित निर्दिष्ट किया था।
मैं यह भी सुझाव दूंगा कि सादा char
का उपयोग किया जाता है यदि डेटा वास्तव में चरित्र डेटा है, यानी सादा पाठ का प्रतिनिधित्व है जैसे कि आप कंसोल पर प्रदर्शित हो सकते हैं।मानक और तृतीय-पक्ष पुस्तकालयों का उपयोग करते समय यह कम प्रकार की समझौते की समस्याएं पेश करेगा। यदि दूसरी ओर डेटा बिट-अप जैसी गैर-वर्ण इकाई का प्रतिनिधित्व करता है, या यदि यह संख्यात्मक 'छोटा पूर्णांक' डेटा है जिस पर आप अंकगणितीय हेरफेर कर सकते हैं, या डेटा जो आप लॉजिकल ऑपरेशंस करेंगे, तो उनमें से एक stdint.h
प्रकार (या उनमें से एक से परिभाषित एक प्रकार) का उपयोग किया जाना चाहिए।
मैं हाल ही में एक TI C54xx संकलक जहां char
तथ्य 16bit में है पर बाहर पकड़ा गया, कि इतने क्यों stdint.h जहां संभव हो उपयोग कर रहा है, भले ही आप इसका इस्तेमाल करते हैं तो परिभाषित करने के लिए एक byte
प्रकार बेहतर है यह मानते हुए कि unsigned char
एक उपयुक्त उपनाम है।
मैं वास्तव में टाइपपीफ के लिए बूस्ट हेडर की आवश्यकता पर बेचा नहीं जाता हूं। –
ध्यान दें कि जबकि stdint.h को C99 द्वारा परिभाषित किया गया है, वर्तमान आईएसओ सी ++ मानक (क्योंकि यह सी 99 की भविष्यवाणी करता है) द्वारा आवश्यक है, इसलिए आप कुछ कंपाइलर्स में पा सकते हैं जिन्हें आपको हेडर नामों के लिए सी सम्मेलन का उपयोग करना है, स्टडींट का उपयोग करना है प्रकार, और यह सबसे पोर्टेबल रूप होगा। –
Clifford