2012-12-11 6 views
14

संभव डुप्लिकेट:
Why does glib redefine types?ग्लिब डेटा प्रकारों का उपयोग करना बेहतर क्यों है (उदा। `Int` के बजाय 'gint`)?

जीटीके + 2.0 ट्यूटोरियल में, मैं here निम्नलिखित बयान पढ़ सकते हैं डेटा प्रकारों के बारे:

कुछ चीजें आप शायद रहे हैं पिछले उदाहरणों में ध्यान दिया गया है जो समझाते हैं। गिन, गचर, इत्यादि जो आप देखते हैं, क्रमशः int और char के टाइप टाइप हैं, जो कि जीएलआईबी सिस्टम का हिस्सा हैं। यह गणना करते समय सरल डेटा प्रकारों के आकार पर उस भरोसेमंद निर्भरता को पाने के लिए किया जाता है।

मुझे इस स्पष्टीकरण के अंतिम भाग को समझ में नहीं आता है। ग्लिब डेटा प्रकारों का उपयोग करना बेहतर क्यों है?

उत्तर

9

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

सी 99 मानक ने निश्चित चौड़ाई वाले प्रकार (int8_t, uint32_t, आदि) को जोड़ा जो ग्लिब प्रकारों को अप्रचलित बना देगा, लेकिन ग्लिब सी 99 मानक की भविष्यवाणी करता है, शायद यही कारण है कि इसका अपना प्रकार सेट है।

+2

यहाँ मैं क्या समझ लिया है ... gint और उदाहरण के लिए gchar बस पोर्टेबिलिटी के लिए बेकार हैं द्वारा अप्रचलित बना देता है। केवल gint32 और ग्लिब द्वारा जोड़े गए प्रत्येक निश्चित आकार डेटा प्रकार C99 मानक से पहले दिलचस्प थे क्योंकि वे चर आवश्यक न्यूनतम आकार रखने के लिए आश्वासन देते हैं। क्या मैं सही हू ? – remjg

+0

आप सही हो सकते हैं। हालांकि यह संभव है कि लोग उदा। एक निश्चित आकार, या कम से कम 32 बिट्स या ऐसा कुछ होना चाहिए। मुद्दा यह है कि आपके कोड में प्रत्येक स्थान को बदलने के बजाए ऐसी किसी भी आवश्यकता को पूरा करने के लिए एकल टाइपपीफ को बदलना आसान होता है जहां आप इनट्स का उपयोग करते हैं। – Michael

+0

आप सही हैं, 'gint' और' gchar' को एक निश्चित आकार के रूप में परिभाषित नहीं किया गया है और इसलिए उनका उपयोग करने का कोई कारण नहीं है। यहां टिप्पणी भी देखें: http://stackoverflow.com/questions/2800310/converting-an-array-of-characters-to-a-const-gchar/2800318#2800318 – ptomato

3

सी डेटा प्रकार अत्यधिक मंच और कार्यान्वयन विशिष्ट उदाहरण पूर्णांक के लिए है रजिस्टर के आकार के होते हैं, चार के रूप में ज्यादा बिट्स एक बाइट के रूप में है, लंबे केवल से int कम पूर्णांक कम से कम 2 है छोटा नहीं का मतलब बाइट्स लेकिन वास्तव में int

से छोटे होने की आवश्यकता नहीं है, इसलिए, कुछ छोटे से सही नामित चर का उपयोग पोर्टेबिलिटी के लिए फायदेमंद है।

और जैसा कि जीटीके 2.0 ट्यूटोरियल कहते हैं:

एक अच्छा उदाहरण है "gint32" जो किसी भी मंच के लिए एक 32 बिट पूर्णांक पर typedef'd किया जाएगा, चाहे वह 64 बिट अल्फा होना है, या 32 बिट i386। Typedefs बहुत सरल और सहज हैं। वे सभी glib/glib.h में परिभाषित हैं (जो gtk.h से शामिल हो जाता है)।

संपादित करें: जैसा कि माइकल ने कहा कि C99 मानक उन्हें नए प्रकार के उपलब्ध कराने के

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