दिलचस्प पोस्ट
पता लगाएँ कि एक आउटगोइंग कॉल का उत्तर दिया गया है या नहीं कैसे मौजूदा, unpushed प्रतिबद्धों को संशोधित करने के लिए? हिटिंग <name> .cmake एक कस्टम निर्देशिका के साथ फ़ाइलें चरित्र का आकार ('ए') सी / सी ++ में आप प्रोग्राम को एक HTML SELECT को ड्रॉप डाउन कैसे बता सकते हैं (उदाहरण के लिए, माउसओवर के कारण)? क्या याहू ने अचानक अपने वित्त डाउनलोड एपीआई को समाप्त कर दिया है? आर में एक। Csv फ़ाइल को पढ़ने की कोशिश करते समय 'अपूर्ण अंतिम पंक्ति' चेतावनी सहेजें और एक फ़ाइल से MemoryStream को लोड करें एमवीवीएम का उपयोग करते हुए एक WPF ListView आइटम से एक डबल क्लिक ईवेंट फ़ायरिंग एक Genymotion VM (कोई खींचें और ड्रॉप समर्थन के साथ) में Google Play सेवाएं स्थापित करने के लिए कैसे? एंड्रॉइड स्टूडियो में ग्रेडल क्या है? 'नाम' या 'आईडी' के साथ एचटीएमएल एंकर? उदाहरण: मैसेजिंग का उपयोग कर गतिविधि और सेवा के बीच संचार रेमंड को अलग करने के लिए ऊंट कैस या टाईटलसीज (उन्नत) PHP का उपयोग करने के लिए HTTP शीर्षलेख UTF-8 सेट करें

डबल अंडर्सकोर (__const) सी में क्या मतलब है?

extern int ether_hostton (__const char *__hostname, struct ether_addr *__addr) __THROW; 

मुझे लिनक्स बॉक्स पर /usr/include/netinet/ether.h में उपरोक्त कार्य परिभाषा मिली।

क्या कोई समझा सकता है कि कंसल्ट (कीवर्ड), एडिट (पहचानकर्ता) और अंतिम __THROW के सामने डबल अंडरस्कोर का क्या अर्थ है?

वेब के समाधान से एकत्रित समाधान "डबल अंडर्सकोर (__const) सी में क्या मतलब है?"

सी में, एक ऊपरी-केस पत्र या किसी अन्य अंडरस्कोर द्वारा अनुक्रमित अंडरस्कोर के साथ शुरू होने वाले प्रतीकों कार्यान्वयन के लिए आरक्षित हैं। आप सी के उपयोगकर्ता के रूप में आरक्षित अनुक्रमों से शुरू होने वाले कोई भी प्रतीक नहीं बना सकते हैं। सी ++ में, प्रतिबंध अधिक कठोर है; आप उपयोगकर्ता एक डबल-अंडरस्कोर वाला प्रतीक नहीं बना सकते हैं।

दिया हुआ:

 extern int ether_hostton (__const char *__hostname, struct ether_addr *__addr) __THROW; 

संभावना (कुछ हद तक संभावना नहीं) के लिए अनुमति देने के लिए __const संकेतन है कि इस कोड का उपयोग प्रोटोटाइप नोटेशन के समर्थन के साथ किया जाता है, लेकिन C89 मानक कीवर्ड const की सही समझ नहीं है। autoconf मैक्रोज़ अभी भी जांच सकता है कि कंपाइलर const लिए समर्थन का काम कर रहा है; इस कोड का इस्तेमाल टूटी कंपाइलर के साथ किया जा सकता है, जिसकी सहायता नहीं है।

__hostname और __addr का प्रयोग आपके लिए एक सुरक्षा उपाय है, हेडर का उपयोगकर्ता। अगर आप जीसीसी और -Wshadow विकल्प के साथ संकलित करते हैं, तो संकलक आपको चेतावनी देगा जब कोई भी स्थानीय चर एक वैश्विक चर का छायांकन करेगा। यदि फ़ंक्शन __hostname बजाय सिर्फ hostname उपयोग __hostname , और यदि आपके पास hostname() नामक एक फ़ंक्शन था, तो वहाँ छिपाना होगा। कार्यान्वयन के लिए आरक्षित नामों का उपयोग करके, आपके वैध कोड के साथ कोई संघर्ष नहीं है।

__THROW का उपयोग करने का मतलब है कि कोड कुछ परिस्थितियों में, कुछ प्रकार की 'फेंक __THROW ' के साथ घोषित किया जा सकता है यह मानक सी नहीं है; यह सी ++ जैसी अधिक है लेकिन एक सी संकलक के साथ कोड का प्रयोग किया जा सकता है, जब तक कि हेडर (या कंपाइलर ही) में से एक __THROW को रिक्त करने के लिए परिभाषित करता है, या मानक C वाक्यविन्यास के कुछ संकलक-विशिष्ट एक्सटेंशन के लिए।


सी मानक (आईएसओ 9899: 1 999) की धारा 7.1.3 कहती है:

7.1.3 सुरक्षित पहचानकर्ता

प्रत्येक हेडर इसके संबंधित उप-खंड में सूचीबद्ध सभी आइडेंटिफायर घोषित करता है या परिभाषित करता है, और इसके संबंधित भविष्य के पुस्तकालय दिशाओं में सूचीबद्ध पहचानकर्ताओं को वैकल्पिक रूप से घोषित करता है या परिभाषित करता है, जो किसी भी उपयोग के लिए या फ़ाइल स्कोप पहचानकर्ता के रूप में उपयोग के लिए हमेशा आरक्षित होते हैं।

– सभी पहचानकर्ता जो एक अंडरस्कोर के साथ शुरू होते हैं और या तो किसी अपरकेस अक्षर या अन्य अंडरस्कोर हमेशा किसी भी उपयोग के लिए आरक्षित होते हैं

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

– निम्नलिखित मैथ्यू नामों में से किसी एक में (भविष्य के पुस्तकालय दिशानिर्देशों सहित) किसी भी संबद्ध शीर्षलेख शामिल होने पर निर्दिष्ट के लिए उपयोग के लिए आरक्षित है; जब तक स्पष्ट रूप से अन्यथा नहीं कहा गया (देखें 7.1.4)।

– निम्नलिखित उप-शर्तों (भविष्य की पुस्तकालय दिशाओं सहित) में से किसी भी बाहरी संबंध के साथ सभी पहचानकर्ता हमेशा बाह्य संबंध के साथ पहचानकर्ता के रूप में उपयोग के लिए आरक्षित होते हैं। 154)

– निम्न किसी भी उपवस्था (भविष्य के पुस्तकालय दिशानिर्देशों सहित) में सूचीबद्ध फ़ाइल स्कोप के साथ प्रत्येक पहचानकर्ता एक मैक्रो नाम के रूप में उपयोग के लिए आरक्षित है और एक ही नाम स्थान में फ़ाइल दायरे के साथ एक पहचानकर्ता के रूप में यदि उसके किसी भी संबद्ध शीर्षलेख शामिल है

कोई अन्य पहचानकर्ता आरक्षित नहीं हैं अगर प्रोग्राम किसी ऐसे संदर्भ में पहचानकर्ता को परिभाषित करता है या परिभाषित करता है जिसमें इसे आरक्षित (7.1.4 की अनुमति के अलावा), या एक मैक्रो नाम के रूप में आरक्षित पहचानकर्ता को परिभाषित करता है, तो व्यवहार अनिर्धारित है।

अगर कार्यक्रम ऊपर सूचीबद्ध पहले समूह में पहचानकर्ता के किसी भी मैक्रो परिभाषा ( #undef साथ) निकालता है, तो व्यवहार अनिर्धारित है।

फुटनोट 154) बाहरी संबंध में आरक्षित पहचानकर्ताओं की सूची में errno , math_errhandling , math_errhandling , और va_end


यह भी देखें C ++ पहचानकर्ता में अंडरस्कोर का उपयोग करने के बारे में नियम क्या हैं ; बहुत सारे नियम सी और सी ++ दोनों पर लागू होते हैं, हालांकि एम्बेडेड डबल-अंडरस्कोर नियम केवल सी ++ में है, जैसा कि इस उत्तर के शीर्ष पर बताया गया है।

कार्यान्वयन द्वारा उपयोग के लिए डबल अग्रणी अंडरस्कोर वाले नाम आरक्षित हैं इसका जरूरी मतलब नहीं है कि वे प्रति आंतरिक हैं, हालांकि वे अक्सर हैं।

विचार यह है कि आपको __ शुरू होने वाले किसी भी नाम का उपयोग करने की अनुमति नहीं है, इसलिए इसे मैक्रो विस्तार जैसे स्थानों में या सिंटैक्स एक्सटेंशन के नामों में उपयोग करने के लिए स्वतंत्र है (जैसे __gcnew C ++ का भाग नहीं है, लेकिन माइक्रोसॉफ्ट इसे C ++ / CLI को विश्वास में जोड़ सकते हैं कि कोई भी मौजूदा कोड में int __gcnew; तरह कुछ नहीं होना चाहिए int __gcnew; इसमें संकलन बंद हो जाएगा)।

यह विशिष्ट एक्सटेंशन का अर्थ __const , यानी __const आपको अपने विशिष्ट संकलक / प्लेटफ़ॉर्म के लिए दस्तावेज़ों से परामर्श करने की आवश्यकता होगी। इस विशेष मामले में, आपको संभवतः दस्तावेज में प्रोटोटाइप पर विचार करना चाहिए (जैसे http://www.kernel.org/doc/man-pages/online/pages/man3/ether_aton.3.html ) फ़ंक्शन के इंटरफ़ेस और वास्तविक हेडर में दिखाई देने वाले __const और __THROW __const अनदेखा करें।

कुछ पुस्तकालयों में सम्मेलन से, यह इंगित करता है कि एक विशेष प्रतीक आंतरिक उपयोग के लिए है और यह लाइब्रेरी के सार्वजनिक एपीआई का हिस्सा बनना नहीं है।

__const में अंडरस्कोर का अर्थ है कि यह कीवर्ड कंपाइलर एक्सटेंशन है और इसका उपयोग पोर्टेबल नहीं है (कॉन्स्ट कीवर्ड को बाद में संशोधन में, सी में जोड़ा गया था, मुझे लगता है कि) __THROW भी कुछ प्रकार का विस्तार है, मुझे लगता है कि यह कुछ __ वितरित __ (कुछ) को परिभाषित किया जाता है अगर जीसीसी का उपयोग किया जाता है, लेकिन मुझे यकीन है कि यह और बहुत आलसी की जांच करने के लिए नहीं है। __ एडीडीर का मतलब किसी भी प्रोग्रामर से हो सकता है कि वह इसका मतलब करना चाहता है, यह सिर्फ एक नाम है