2013-04-12 6 views
6

मैं एक सी फ़ाइल संकलित करने के लिए "हाथ" करने की कोशिश कर रहा हूं, इसमें कई शीर्षलेख फ़ाइलें शामिल हैं .. मैं इन शीर्षलेख फ़ाइलों की सूची ढूंढने की कोशिश कर रहा हूं .. इसमें शामिल सभी शीर्षलेख फ़ाइलों की सूची ढूंढने का आसान तरीका क्या है?सी फ़ाइल द्वारा शामिल सभी शीर्षलेख फ़ाइलों की सूची

cpp -M 

है कि आप सभी हेडर दिखाएगा शामिल:

+0

हाँ, सी। फ़ाइल में देखें। या वैकल्पिक रूप से, आप -E संकलक विकल्प का उपयोग कर मास्टर हेडर पर देख सकते हैं। – Shark

+0

यहां जीसीसी के लिए एक संकेत है: http://stackoverflow.com/questions/42308/tool-to-track-include- निर्भरता –

+1

विजुअल स्टूडियो http://msdn.microsoft.com/en-us/library/hdkef6tk% के लिए 28v = vs.90% 29.aspx –

उत्तर

10

आप इसे विकल्प है साथ हैडर की सूची रिकर्सिवली शामिल डंप करने के लिए जीसीसी सी पूर्वप्रक्रमक उपयोग कर सकते हैं।

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

इस प्रयोग में इस आदेश का पूरा रूप है:

cpp -M [-I include_directory *] path_to_c_file.c 
+0

यह फिर से टूलचैन के लिए लागू होता है? –

+0

यह जीसीसी – piokuc

+0

पर लागू होता है आह, thx! मैं 'gcc-m' या' g ++ -M' 'cpp' कमांड से परिचित हूं और यह विशेष विकल्प मेरे लिए नया है। क्या यह पुनरावर्ती रूप से शामिल फ़ाइलों को भी ट्रैक करता है? इसके बारे में भूल जाओ, मुझे लगता है कि यह स्टैंडअलोन प्रीप्रोसेसर है ... –

0

सबसे compilers स्विच उन्हें सिर्फ फ़ाइल preprocess करना है। इसका अर्थ यह है कि वे सभी #include को वास्तविक कोड में विस्तारित करते हैं। और आमतौर पर उनमें मूल की रेखा पर एक टिप्पणी (उचित सी टिप्पणी) शामिल होती है। तो फिर आप सभी शामिल हेडर एकत्र करने के लिए ऐसी सभी टिप्पणियों के परिणामस्वरूप प्रीप्रोसेस्ड कोड खोज सकते हैं।

+2

यह आमतौर पर एक टिप्पणी नहीं है, बल्कि एक '# लाइन 'निर्देश है। –

+1

और यह भी: स्विच आमतौर पर '-E' (या'/E') होता है। –

2

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html#Preprocessor-Options -H और -M विकल्प इस उद्देश्य के लिए उपयोगी हैं।

एक और विकल्प http://www.stack.nl/~dimitri/doxygen/ का उपयोग करना और अपनी प्रोजेक्ट के दस्तावेज उत्पन्न करना है, उसके बाद आप इसे फ़ाइल निर्भरताओं को देखने के लिए देख सकते हैं :), इसे प्राथमिकता दी जाती है क्योंकि यह कई भाषाओं का समर्थन करता है: सी, सी ++, उद्देश्य-सी, सी #, PHP , जावा, पायथन, आईडीएल (कॉर्बा और माइक्रोसॉफ्ट स्वाद), फोरट्रान, वीएचडीएल, टीसीएल।

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