2009-06-16 7 views
49

मैं gcc पर एक विकल्प ढूंढ रहा हूं जो इसे मानक इनपुट से एक स्रोत फ़ाइल पढ़ेगा, मुख्य रूप से इसलिए मैं इस तरह कुछ ऐसा कर सकता हूं जैसे किसी ऑब्जेक्ट फ़ाइल को flex से उत्पन्न करता है जो सी कोड उत्पन्न करता है (flex ' -t विकल्प मानक आउटपुट में उत्पन्न सी लिखते हैं):क्या पाइप से पढ़ने के लिए जीसीसी प्राप्त करना संभव है?

flex -t lexer.l | gcc -o lexer.o -magic-option-here 

क्योंकि मैं वास्तव में उत्पन्न सी फाइल के बारे में परवाह नहीं है।

इस अस्तित्व की तरह कुछ करता है, या मैं अस्थायी फ़ाइलों का उपयोग करने के लिए क्या है?

+1

जेनरेट की गई सी फ़ाइल को उस कोड को डीबग करने की आवश्यकता होने पर आसपास होने के लिए अच्छा है। – laalto

+2

@laalto: यह एक अच्छा मुद्दा है, लेकिन फ्लेक्स उत्पन्न करने वाला कोड किसी भी तरह से मानव पठनीय नहीं है। – Zifre

उत्तर

58

हाँ, पर आप -x विकल्प का उपयोग भाषा निर्दिष्ट करने के लिए है:

# Specify input file as stdin, language as C 
flex -t lexer.l | gcc -o lexer.o -xc - 
+1

मैं लगा यह हो सकता है - (कई अन्य उपकरणों के लिए इसका इस्तेमाल), लेकिन मुझे आदमी पेज में इसके बारे में कुछ भी नहीं मिला ... – Zifre

16
flex -t lexer.l | gcc -x c -c -o lexer.o - 

असल में तुम कहते हो जाता है कि फ़ाइल नाम - निर्दिष्ट करना एक फ़ाइल नाम है - 'कह के लिए कुछ हद तक एक मानक सम्मेलन है मानक इनपुट '। आप -सी ध्वज भी चाहते हैं ताकि आप लिंक नहीं कर रहे हैं। और जब जीसीसी मानक इनपुट से पढ़ता है, तो आपको यह बताना होगा कि यह किस भाषा के साथ है -x। -x सी का कहना है कि यह सी कोड है।

+0

मुझे पता है कि -c, है मैं सिर्फ यह सादगी के लिए बाहर छोड़ दिया (क्योंकि मेरे पास है फ्लेक्स और जीसीसी पर भी कई अन्य विकल्प)। – Zifre

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

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