दिलचस्प पोस्ट
एकाधिक, अनुक्रमिक लाने () वादा एंड्रॉइड में मोबाइल डिवाइस के अक्षांश और देशांतर कैसे प्राप्त करें? React.js में सरणी बच्चों के लिए अद्वितीय कुंजी को समझना फ़ायरफ़ॉक्स ऐड-ऑन के लिए मैं हस्ताक्षर जांच कैसे अक्षम करूं? मैं एक बोली स्क्रिप्ट में संख्या कैसे जोड़ सकता हूँ जावास्क्रिप्ट में एरे की एक सरणी को मिलाएं / समतल करें? SQL विभाजन अल्पविराम से अलग पंक्ति एचटीटीपी क्लाइंट एंड्रॉइड स्टूडियो में आयात नहीं करेगा अंत में हमेशा जावा में निष्पादित करता है? विन्यास स्थान से कॉन्फ़िग लोड करने के लिए कॉन्फ़िगरेशन प्रबंधक का उपयोग करना ईएल प्रस्ताव / स्वतः पूर्ण / कोड एक्लिप्स के साथ फेसलेट्स में सहायता करते हैं जावा InetAddress.getLocalHost (); 127.0.0.1 रिटर्न … कैसे असली आईपी पाने के लिए? जावा Enum परिभाषा जावा में एक ज़िप फ़ाइल कैसे बनाएं कैसे एक छवि को आधार64 एन्कोडिंग में बदलने के लिए?

_t (अंडरस्कोर-टी) द्वारा किस प्रकार का अनुसरण किया जाता है?

यह एक साधारण प्रश्न जैसा लता है, लेकिन मुझे इसे स्टैक ओवरफ़्लो खोज या Google के साथ नहीं मिल सकता है एक प्रकार का एक _t मतलब द्वारा पीछा क्या करता है? जैसे कि

 int_t anInt; 

मैं सी कोड में बहुत कुछ देख रहा हूं जिसका मतलब हार्डवेयर के साथ मिलकर काम करना है- मैं मदद नहीं कर सकता, लेकिन मुझे लगता है कि वे संबंधित हैं।

वेब के समाधान से एकत्रित समाधान "_t (अंडरस्कोर-टी) द्वारा किस प्रकार का अनुसरण किया जाता है?"

जैसा डगलस मेले ने कहा, यह मूलतः एक प्रकार का नाम दर्शाता है। नतीजतन, आपको ' _t ' के साथ चर या फ़ंक्शन नामों को समाप्त करने के लिए बुरा सलाह दी जाएगी क्योंकि इससे कुछ भ्रम हो सकता है साथ ही size_t , C89 मानक wchar_t , off_t , ptrdiff_t को परिभाषित करता है, और शायद कुछ अन्य मैं भूल गया हूँ। C99 मानक में बहुत अधिक अतिरिक्त प्रकार हैं, जैसे कि uintptr_t , intmax_t , int8_t , uint_least16_t , uint_fast32_t , और इसी तरह। इन नए प्रकारों को औपचारिक रूप से <stdint.h> में परिभाषित किया जाता है, लेकिन अक्सर आप <inttypes.h> उपयोग करेंगे (जो सामान्य सी हेडर के लिए असामान्य रूप से) <stdint.h> शामिल हैं यह ( <inttypes.h> ) <inttypes.h> printf() और scanf() साथ उपयोग के लिए मैक्रोज़ को भी परिभाषित करता है।

जैसा कि मैट कर्टिस ने लिखा था, प्रत्यय में संकलक के लिए कोई महत्व नहीं है; यह एक मानव-उन्मुख सम्मेलन है

हालांकि, आपको यह भी ध्यान रखना चाहिए कि POSIX ' _t ' में समाप्त होने वाले बहुत से अतिरिक्त प्रकार के नामों को परिभाषित करता है, और कार्यान्वयन के लिए प्रत्यय सुरक्षित रखता है इसका मतलब यह है कि यदि आप POSIX- संबंधित सिस्टम पर काम कर रहे हैं, तो सम्मेलन के साथ अपने स्वयं के नामों को परिभाषित किया जाता है। जिस प्रणाली पर मैं काम करता हूं, उसने इसे किया है (20 से अधिक वर्षों तक); हम नियमित रूप से उसी प्रकार के नामों के साथ परिभाषित प्रणालियों से ट्रिप करते हैं जैसे हम परिभाषित करते हैं।

यह डेटा प्रकार नाम देने के लिए इस्तेमाल किया जाने वाला एक सम्मेलन है, उदाहरण के लिए typedef :

typedef struct { char* model; int year; ... } car_t;
typedef struct { char* model; int year; ... } car_t; 

_t आमतौर पर एक अपारदर्शी प्रकार परिभाषा को लपेटता है

जीसीसी केवल उन नामों को जोड़ती है जो कि आरक्षित नेमस्पेस में जिसे आप उपयोग नहीं कर सकते हैं _t साथ समाप्त होता है, मानक सी और POSIX (जीएनयू सी पुस्तकालय पुस्तिका) के भविष्य के संस्करणों के साथ संघर्ष से बचने के लिए। कुछ शोध के बाद, मुझे पोसिक्स मानक (1003.1, तर्क (सूचनात्मक)) के अंदर सही संदर्भ मिला।

बी .2.12 डेटा प्रकार

आवश्यकता है कि '' _t '' में इस खंड अंत में परिभाषित अतिरिक्त प्रकार नाम अंतरिक्ष प्रदूषण की समस्या से प्रेरित हो गया। एक हेडर फाइल में एक प्रकार (जहां उस प्रकार को आईईईई एसटीडी 1003.1-2001 द्वारा परिभाषित नहीं किया गया है) को परिभाषित करना मुश्किल है और इसे कार्यक्रम के नाम की जगह में प्रतीकों को बिना जोड़ते हुए दूसरे में उपयोग करें। कार्यान्वयनकर्ताओं को अपने प्रकार प्रदान करने की अनुमति देने के लिए, सभी अनुरूप अनुप्रयोगों को "_t" में समाप्त होने वाले प्रतीकों से बचने की आवश्यकता होती है, जो कि अतिरिक्त प्रकार प्रदान करने के लिए लागूकर्ता को अनुमति देता है। क्योंकि संरचना के सदस्यों की परिभाषा में प्रकार का एक बड़ा उपयोग है, जो आईईईई एसटीडी 1003.1-2001 में परिभाषित संरचनाओं (और कई मामलों में) को जोड़ा जा सकता है, अतिरिक्त प्रकार की आवश्यकता सम्मोहक है

संक्षेप में, मानक कहते हैं कि मानक प्रकार की सूची को विस्तारित करने की अच्छी संभावनाएं हैं, इसलिए मानक अपने उपयोग के लिए _t नाम स्थान को प्रतिबंधित करता है।

उदाहरण के लिए, आपका प्रोग्राम POSIX 1003.1 अंक 6 के साथ मेल खाता है और आप एक प्रकार की foo_t निर्धारित foo_tपॉसिक्स 1003.1 अंक 7 अंततः एक नया परिभाषित प्रकार foo_t साथ जारी किया गया है। आपका प्रोग्राम नए संस्करण से मेल नहीं खाता है, जो कि समस्या हो सकती है। _t उपयोग को प्रतिबंधित करने से कोड रिफैक्टरिंग से रोकता है। इस प्रकार, यदि आप एक POSIX शिकायत के लिए लक्ष्य है, तो आप निश्चित रूप से मानक _t रूप में _t से बचना चाहिए।

साइड नोट: व्यक्तिगत रूप से, मैं POSIX से चिपकने की कोशिश करता हूं क्योंकि मुझे लगता है कि यह साफ प्रोग्रामिंग के लिए अच्छी बुनियादी बातें देता है। इसके अलावा, मैं लिनक्स कोडिंग शैली (अध्याय 5) दिशा निर्देशों का बहुत पसंद करता हूं। ऐसे कुछ अच्छे कारण हैं, क्यों नहीं टाइप टाइप करें उममीद है कि इससे मदद मिलेगी!

यह डेटा प्रकार के लिए एक मानक नामकरण सम्मेलन है, जो आमतौर पर टाइप फिफ्स द्वारा परिभाषित किया गया है। हार्डवेयर रजिस्टरों के साथ काम करने वाले बहुत से सी कोड हस्ताक्षर किए और अहस्ताक्षरित निश्चित आकार के डेटा प्रकारों के लिए C99-परिभाषित मानक नाम का उपयोग करता है। एक सम्मेलन के रूप में, यह नाम मानक हेडर फ़ाइल (stdint.h) में हैं, और _t के साथ समाप्त होता है।

इसका मतलब है प्रकार। size_t आकार का प्रकार है

_t स्वाभाविक रूप से कोई विशेष अर्थ नहीं है लेकिन इसका उपयोग सामान्य उपयोग में गिर गया है ताकि टाइप टाइप- _t लिए _t प्रत्यय जोड़ा जा सके।

आप चर नामकरण के लिए आम सी प्रथाओं से अधिक परिचित हो सकते हैं … यह एक समानता के समान है जैसे सूचक के सामने सामने रहना और वैश्विक चर के सामने अंडरस्कोर का उपयोग करना (यह थोड़ी कम आम है) , और अस्थायी लूप वैरिएबल के लिए वेरिएबल नामों i , j , और k लिए।

कोड में जहां शब्द-आकार और क्रम महत्वपूर्ण है, कस्टम परिभाषित प्रकारों का उपयोग करने के लिए यह बहुत सामान्य है, जैसे कि BYTE WORD (सामान्यतः 16-बिट) DWORD (32-बिट)।

int_t इतना अच्छा नहीं है, क्योंकि अंतर की परिभाषा प्लेटफार्मों के बीच भिन्न होती है – इसलिए जिनकी int आप अनुरूप हैं? (हालांकि, इन दिनों, अधिकांश पीसी केंद्रित विकास इसे 32 बिट के रूप में मानता है, गैर-पीसी विकास के लिए बहुत कुछ अभी भी इंट के 16 बिट्स के रूप में व्यवहार करते हैं)।

यह सिर्फ एक सम्मेलन है जिसका अर्थ है "प्रकार" इसका अर्थ संकलक के लिए कोई विशेष नहीं है।

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

यह हार्डवेयर इंटरफ़ेस कोड के लिए एक विशेष रूप से महत्वपूर्ण विचार है, हो सकता है कि ऐसा क्यों हो कि आपने पहले वहां पर सम्मेलन देखा है।

विषय के बारे में कुछ अच्छे स्पष्टीकरण थे। बस प्रकारों को फिर से परिभाषित करने के लिए एक और कारण जोड़ने के लिए:

कई एम्बेडेड प्रोजेक्ट्स में, सभी प्रकार के प्रकार को दिए गए आकार को सही ढंग से बताए जाने के लिए और विभिन्न प्लेटफार्मों (यानी हार्डवेयर प्रकार के कंपाइलर) में पोर्टेबिलिटी को बेहतर बनाने के लिए पुन: परिभाषित किए गए हैं।

एक और कारण यह है कि आप अपने कोड को विभिन्न ओएस में पोर्टेबल बनाने के लिए और ओएस में मौजूदा प्रकार के टकराव से बचें जो आप अपने कोड में एकीकृत कर रहे हैं। इसके लिए, आमतौर पर एक अद्वितीय (संभव) उपसर्ग जोड़ा जाता है।

उदाहरण:

 typedef unsigned long dc_uint32_t;