2010-10-12 4 views
18

मैं code completion के लिए टैग फ़ाइलों का उपयोग करता हूं और पैरामीटर, ओवरलोड, फ़ाइलों (जहां घोषित) आदि के त्वरित, इनलाइन व्यू के लिए, मुझे सी 99, सी ++ 03 और सी के लिए स्वतंत्र रूप से उपलब्ध टैग कहां मिल सकता है ++ 0x मानक पुस्तकालय? (सी 8 9 कुछ भी नहीं होगा, लेकिन मेरे पास सी 99 होगा।)मानक लाइब्रेरी टैग

मैं बिना क्रूर के टैग पसंद करता हूं; जैसे कार्यान्वयन पैरामीटर के लिए आरक्षित नामों का उपयोग करते हैं, इसलिए "std :: min (_M_a, _M_b)" के बजाय, मैं "std :: min (a, b)" देखता हूं। यह और अन्य मुद्दे वास्तविक कार्यान्वयन से उत्पन्न होने से बाहर निकलते हैं। हालांकि मुझे लगता है कि कुछ पोस्टप्रोसेसिंग उन लोगों को साफ कर सकते हैं (विशेष रूप से पहचानकर्ता मुद्दा), ऐसा लगता है कि यह स्क्रैच से लिखना आसान होगा।

+1

कूल। मुझे नहीं पता था कि आप उन चीजों को विम में कर सकते हैं। –

+0

टैग की बात करते हुए, क्या यह सी ++ 1x नहीं होना चाहिए? ;) –

+6

@jus: सं। –

उत्तर

2

उन सटीक आवश्यकताओं के लिए आप शायद उन बनाना पड़ेगा खुद :(

+2

मुझे लगता है कि मुझे बुलेट काटने और ऐसा करने की ज़रूरत है, लेकिन उम्मीद है कि काम दूसरों द्वारा उपयोग किया जा सकता है। मैं अब सी ++ 03 stdlib के माध्यम से आधा रास्ते हूं, और एक लिंक के साथ लगभग एक हफ्ते में प्रश्न (आपके लिए या किसी और के लिए दिलचस्पी है) अपडेट करेगा। (अरे, यह मेरे खाली समय में है।) –

2

खुद के हेडर पर ctags dir, आपके सवाल

+4

जैसा कि मैंने कहा था, "यह वास्तविक कार्यान्वयन से उत्पन्न नियम है।" –

+0

@ रोगर पाट: यह नहीं है। असल में आपका एकमात्र तरीका कार्यान्वयन से उत्पन्न करना है। और मुझे कोई समस्या नहीं दिखाई देती है, आमतौर पर उपयोग किए गए रूपांतरण सुसंगत होते हैं इसलिए आरक्षित पहचानकर्ताओं के कार्यान्वयन के लिए स्कैन करना और उन्हें कुछ सुंदर में परिवर्तित करना आसान है। एमवीएस हेडर ऐसा लगता है कि वे * एक स्वचालित उपकरण के साथ उलझ गए थे: alloc -> _Alloc आदि ... – ybungalobill

+1

@ybungalobill: यह मेरे लिए स्पष्ट प्रतीत होता है, यह उत्तर प्रश्न को छोड़ने के अलावा और अधिक पढ़ने के बिना लिखा गया था। अगर मैंने अपने कारणों में गलती की है * क्यों * कार्यान्वयन से उत्पन्न करना मेरे लिए काम नहीं करता है, कृपया, उनको इंगित करें, लेकिन यह निश्चित रूप से मेरे प्रश्न का उत्तर नहीं देता है। –

0

यह एक पूरा जवाब नहीं है में पोस्ट ब्लॉग आप लिंक में लिखा की तरह उपयोग करके किसी टैग पुस्तकालय उत्पन्न करते हैं। किसी ने perl script to extract tags from SGI's STL documentation प्रकाशित किया। इसमें फ़ंक्शन पैरामीटर नाम शामिल नहीं हैं। चूंकि यह प्रलेखन पर काम करता है, वहां कोई क्रूर नहीं है। उम्मीद है इससे कुछ मदद मिली होगी।

+1

एसजीआई के एसटीएल दस्तावेज़ कई तरीकों से मानक पुस्तकालय से अलग हैं। –

5

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

मुझे लगता है कि यहाँ सबसे अच्छा समाधान प्रलेखन पार्स करने के लिए है:

यहाँ सभी कार्यों और मैक्रो एक आसानी से पार्स प्रारूप में libc द्वारा निर्यात की एक सूची है:

http://www.gnu.org/s/libc/manual/html_node/Function-Index.html#Function-Index

प्रत्येक समारोह लिंक उस पृष्ठ पर जो उस फ़ंक्शन के पैरामीटर सूचीबद्ध करता है, एक अनुमानित प्रारूप में भी:

http://www.gnu.org/s/libc/manual/html_node/Block-Input_002fOutput.html#index-fread-1010

पेजों को पार्स करना BeautifulSoup पायथन मॉड्यूल का उपयोग करके बहुत आसान है।

+0

सी प्रीप्रोसेसर का उपयोग कर मैक्रो विस्तार के बारे में क्या? – sellibitze

+0

यह बनाने के लिए एक साफ सुविधा होगी। इसे समस्याग्रस्त कर दिया जाएगा क्योंकि संकलक द्वारा रन-टाइम पर परिभाषित किए गए '# if/# ifdef' में उपयोग किए गए मानों की भविष्यवाणी करना बहुत मुश्किल हो सकता है। यह मैक्रोज़ में उपयोग किए गए पैरामीटर के निष्कर्षण की अनुमति भी नहीं देगा जिसमें भिन्नता पैरामीटर हैं (यानी #define func (...))। –

+0

[आप कुछ पूर्वनिर्धारित मैक्रोज़ को कुछ कंपाइलर्स के साथ कमांड लाइन स्विच के माध्यम से देख सकते हैं।] (Http://stackoverflow.com/questions/75538/hidden-features-of-c/2339965#2339965) डॉक्सीजन प्रीप्रोकैसिंग के समान कुछ करता है , लेकिन ग्रैन्युलरिटी को नियंत्रित करने के लिए कई विकल्प हैं। –

0

तो मानक पुस्तकालयों के लिए पूरा होने में हो रही मुख्य मुद्दा है, clang vim plugin सब पर टैग का उपयोग किए बिना ऐसा करता है बहुत अच्छी तरह से। वहाँ हालांकि अब भी है, समापन में कुछ पैरामीटर "क्रुफ्ट", क्योंकि यह हेडर द्वारा उपयोग किए गए प्रतीकों का उपयोग करता है।

आप मुख्य रूप से केवल एक फ़ाइल को ~/.vim/प्लगइन में छोड़ दें, क्लैंग इंस्टॉल करें, और यह काम करता है। omnicomplete मार्ग से बहुत आसान मेरे सीमित उपयोग में अब तक का एकमात्र मुद्दा यह है कि कभी-कभी पूरा होने के साथ धीमा हो जाता है।