2009-11-14 14 views
25

मुझे आश्चर्य है कि सी/सी ++ मानक पुस्तकालयों में उपयोग किए जाने वाले नामकरण सम्मेलन का नाम है, या कम से कम एक धोखा-शीट जहां मैं नियमों को देख सकता हूं। जैसेसी/सी ++ stdlib नामकरण सम्मेलन का नाम?

push_back -- underscore used 
setstate  -- but not used here! 
string::npos -- when to use abbreviations? 
fprintf 
... 

क्या सी/सी ++ मानक पुस्तकालयों में उपयोग किए जाने वाले नामकरण सम्मेलन का एक विशिष्ट नाम है?

+9

इसके अलावा, 'std :: ios_base :: Init' o_O –

+0

का अजीब ऊपरी केस अक्षर क्या है ?! पूंजी अक्षरों का भी उपयोग किया जाता है! : पी – AraK

+41

इसे "इस सप्ताह के साथ आने के लिए जो भी बकवास हुआ" कहा जाता है। –

उत्तर

3

दुखी सच यह है कि कोई असली सम्मेलन नहीं है।

एक दर्दनाक अनुस्मारक के रूप में stdio कार्यों के तर्क आदेश देखें।

+2

इसके लिए एक अच्छा कारण है वास्तव में, वे। पारंपरिक सी फ़ंक्शन कॉल एबीआई के साथ, एक ही अंतिम तर्क के साथ कई फ़ंक्शंस को कॉल करना (यानी '(i = 0; i ephemient

0

मेरे पास जवाब नहीं है, लेकिन कम से कम, मुझे नहीं लगता कि सी और सी ++ समान नामकरण सम्मेलन का उपयोग करते हैं।

+0

क्या आप और बता सकते हैं? – AraK

+0

fprintf, strlen, itoa (shudder) जैसी चीजें सी पुस्तकालयों से आती हैं। जिनके पास निचले मामले का सम्मेलन है, कोई अंडरस्कोर और भारी संक्षेप में नहीं है। सी पुस्तकालय सी ++ में "सी" से शुरू होते हैं: cstdio, cstring, cmath आदि – UncleBens

+0

'सी' का नाम' strpbrk' और 'C++' का नाम 'sync_with_stdio' है, और' swstdio' नहीं है :) –

24

सी/सी ++ नामकरण सम्मेलन के साथ-साथ प्रसिद्ध मेक-स्टफ-अप-ए-वी-गो-गो-का-उपयोग करता है। आम तौर पर, सी/सी ++ मानक लाइब्रेरी नामकरण सम्मेलन के बारे में आप केवल एक ही संगत चीजें कह सकते हैं कि यह ऊंट केस (सी ++ एसटीएल टेम्पलेट टाइपनामों को छोड़कर) का उपयोग नहीं करता है, यह लोअर-केस क्लास और फ़ंक्शन नामों का उपयोग करता है, और (कभी-कभी) शब्दों को अलग करने के लिए अंडरस्कोर का उपयोग करता है। लेकिन अंडरस्कोर का उपयोग सी ++ चीज से अधिक है; विशेष रूप से सी शब्दों को संक्षेप में बदलता है, उदा। strlen, memcpy। यह शायद यूनिक्स के शुरुआती दिनों में चीजों के लिए बहुत ही कम नामों का उपयोग करने की प्रवृत्ति का परिणाम है।

+17

"चीजों के लिए बहुत terse नामों का उपयोग करने की प्रवृत्ति" जो या तो 80-चार या छोटे टर्मिनलों के कारण है; कंपाइलर्स पर संसाधन सीमा; हफमैन को ब्रह्मांड को घेरने की एक सहज इच्छा; या ऊपर के सभी। –

+19

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

6

मुझे लगता है कि अलग-अलग लोगों द्वारा अलग-अलग समय पर कई समूहों का आविष्कार किया गया है और कुछ अलग-अलग सम्मेलनों का उपयोग किया जाता है: सी पुस्तकालय, धाराएं, तार, एसटीएल (कंटेनर + एल्गोरिदम + इटरेटर)। मुझे एहसास है कि बाद में सम्मेलन के रूप में देखा जा सकता है, जो बूस्ट और सी ++ 0x नामकरण जैसी चीजों के लिए उदाहरण सेट करता है।

8

सी मानक लाइब्रेरी में well defined rules आपको नाम कॉन्फ़िगर से बचने के लिए पालन करना होगा। हालांकि मुझे सी ++ के बारे में कुछ भी पता नहीं है।

अगर आपको लगता है कि यह एक गड़बड़ आप PHP पुस्तकालय की जांच करनी चाहिए है ...

+0

+1। आपके नाम से अधिक नाम सुरक्षित हैं, उदाहरण के लिए '_t' में समाप्त होने वाले प्रकार। – u0b34a0f6ae

+0

@kaizer: afaik रिजर्व '_t' एक POSIX प्रतिबंध – Christoph

+0

हाँ है। सी केवल उन लोगों को सुरक्षित रखता है जो 'uint' या' int' से शुरू होते हैं और '_t' के साथ समाप्त होते हैं। –

0

मुझे नहीं लगता कि के लिए एक नाम है है या तो नामकरण रिवाजों का की स्थापना की।

सी और सी ++ मानकों में नामकरण सम्मेलन अलग-अलग हैं, हालांकि बेहोशी से संबंधित हैं।

विशेष रूप से, सी लाइब्रेरी में, कोई फ़ंक्शन या मैक्रो नाम C++ लाइब्रेरी के विपरीत, अंडरस्कोर (AFAICR) होता है।

अधिकांश सी लाइब्रेरी नामकरण सम्मेलन को प्राथमिकता द्वारा नियंत्रित किया गया था; यह उल्लेखनीय रूप से कुछ आविष्कार (<locale.h> के माध्यम से स्थानीय एक होने के साथ लोकेल हैंडलिंग) के साथ मौजूदा अभ्यास (लगभग 1 9 84 तक) मानकीकृत किया गया है।

सी ++ लाइब्रेरी भी उदाहरण पर आधारित थी - लेकिन उदाहरणों का एक अलग सेट, और मुझे लगता है कि यह तर्कसंगत है कि एसटीएल मानक द्वारा अपना गोद लेने से पहले व्यापक रूप से उपयोग में नहीं था क्योंकि सी पुस्तकालय में कार्य थे ।

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