2011-10-08 19 views
6

में नियमित अभिव्यक्तियां मैं जानना चाहूंगा कि कंपाइलर (जीसीसी) प्री प्रोसेसर के भीतर कोई नियमित अभिव्यक्ति विस्तार है या नहीं। मूल रूप से अधिक लचीला कोड पीढ़ी मैक्रोज़।सी प्रीप्रोसेसर मैक्रो

अगर कोई तरीका नहीं है, तुम कैसे हो मैं एक ही परिणाम

+0

यदि आप वास्तविक समस्या के बारे में अधिक जानकारी देते हैं तो किसी को एक समाधान के बारे में पता हो सकता है। – krs1

+0

मेरे पास कई मामले हैं जहां यह उपयोगी चीज है। उदाहरण के लिए एनम सदस्यों और स्वचालित रूप से एक समूह लेना उनके बारे में एक स्विच स्टेटमेंट बनाते हैं ताकि यहां तक ​​कि यदि कोई सदस्य जोड़ा जाता है तो कोड को डिफ़ॉल्ट कार्यान्वयन या #error के साथ अपडेट किया जाता है। यदि आपको लगता है कि यह वास्तव में महत्वपूर्ण जानकारी है, तो मैं इसे –

+0

@aiwarrior में प्रश्न में डाल दूंगा - आपके ऊपर निर्दिष्ट समस्या के लिए - आप [एक्स-मैक्रो] (http://en.wikibooks.org/wiki/C_Programming/Preprocessor का उपयोग कर सकते हैं # एक्स-मैक्रोज़) ENUM और स्विच स्टेटमेंट्स को एक साथ उत्पन्न करने की चाल है। इसके अलावा आप इस [ई-बुक] (http://www.keithschwarz.com/coursereader.pdf) में एक्स-मैक्रोज़ के बारे में पढ़ सकते हैं - पृष्ठ 173 - "प्रीप्रोसेसर II के व्यावहारिक अनुप्रयोग: एक्स मैक्रो ट्रिक"। –

उत्तर

5

सी पूर्वप्रक्रमक ऐसा नहीं कर सकते पूरा सुझाव देते हैं।

आप टेम्पलेट प्रोसेसर का उपयोग करना चाह सकते हैं (उदाहरण के लिए Mustache लेकिन कई अन्य हैं) जो संकलक को पास करने से पहले आपको जो चाहिए उसे उत्पन्न करता है।

+0

यह वास्तव में ऐसा कुछ है जिसे मैंने कभी नहीं सुना है और ऐसा लगता है कि इससे बहुत मदद मिलेगी। मैं यह देखने के लिए कुछ और उत्तरों का इंतजार करूंगा कि कोई अन्य समाधान –

1

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

+0

है, मैं शुद्ध नहीं हूं और मैं असहमत हूं। क्यूएमके के पास सी ++ के क्यूटी के प्रीप्रोकैसिंग के साथ कुछ लेना देना नहीं है। यह मजाक है! doc.qt.nokia.com/latest/moc.html –

+0

जबकि मैं अपारदर्शी तरीके से सहमत नहीं हूं qmake भाषा के संबंध में काम करता है जो खुद में एक परियोजना होगी और मुझे इतनी फायरपावर की आवश्यकता नहीं है –

+0

बेशक मैं सोच रहा था moc .. मेरे बुरे! नींद की ज्यादा जरुरत हैं। ;-) – RushPL

0

इस https://github.com/graph/qc qc = त्वरित सी यह है कि आप अपने स्रोत कोड फ़ाइलों कि qc.h

$replace asdf_(\d+) => asdf_ :) $1 blabla 

// and now in your code anything that matches the above regular expression 
asdf_123 
// will become asdf_ :) 123 blabla 

के साथ समाप्त में ऐसा कर सकते हैं नहीं है और यह उत्पादन एक सीपीपी & एक ज thats preprocessed होगा। यह हेडर फ़ाइलों को बनाए रखने की आवश्यकता से बचने के लिए बनाया गया है। और कुछ अन्य चीजें इसे सी ++ के साथ पिछड़ा संगत नहीं बनाती हैं, लेकिन यह सी ++ कोड आउटपुट करती है ताकि आप दिन के अंत में सभी सी ++ चीजें कर सकें।

संपादित करें: मैंने इसे बनाया और qc की ओर पूर्वाग्रह है।

0

आप re2c.org पर देखना चाहेंगे। यह नियमित अभिव्यक्तियों से मेल खाने के लिए सी कोड उत्पन्न करने के लिए एक अलग सी प्रीप्रोसेसर है। मैंने पाया कि कुछ इसी तरह की तलाश करते समय आपका प्रश्न।

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