GCC 7.3 - 12. Invocation

12 मंगलाचरण




gcc

12 मंगलाचरण

अधिकांश बार जब आप C प्रीप्रोसेसर का उपयोग करते हैं तो आपको इसे स्पष्ट रूप से लागू करने की आवश्यकता नहीं होती है: C कंपाइलर स्वचालित रूप से ऐसा करता है। हालांकि, प्रीप्रोसेसर कभी-कभी अपने आप ही उपयोगी होता है। आप प्रीप्रोसेसर को या तो cpp कमांड के साथ, या gcc -E माध्यम से आमंत्रित कर सकते हैं। जीसीसी में, प्रीप्रोसेसर वास्तव में एक अलग कार्यक्रम के बजाय संकलक के साथ एकीकृत होता है, और ये दोनों कमांड जीसीसी को आमंत्रित करते हैं और इसे प्रीप्रोसेसिंग चरण के बाद बंद करने के लिए कहते हैं।

यहाँ सूचीबद्ध cpp विकल्प भी gcc द्वारा स्वीकार किए जाते हैं और इसका वही अर्थ है। इसी तरह cpp कमांड सभी सामान्य gcc ड्राइवर विकल्पों को स्वीकार करता है, हालांकि प्रीप्रोसेसिंग के बाद संकलन चरणों से संबंधित अनदेखी की जाती है।

केवल प्रीप्रोसेसिंग व्यवहार के लिए विशिष्ट विकल्प यहां प्रलेखित हैं। अन्य ड्राइवर विकल्पों के पूर्ण प्रलेखन के लिए जीसीसी मैनुअल देखें।

cpp कमांड दो फ़ाइल नामों की अपेक्षा करती है, जैसे कि आर्ग्युमेंट्स, इनफाइल और आउटफाइल । प्रीप्रोसेसर ने किसी भी अन्य फाइल के साथ साथ ' #include ' निर्दिष्ट किया है। संयुक्त इनपुट फ़ाइलों द्वारा उत्पन्न सभी आउटपुट आउटफाइल में लिखे गए हैं।

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

जब तक अन्यथा उल्लेख नहीं किया जाता है, या विकल्प ' = ' में समाप्त हो जाता है, तब तक सभी विकल्प जो एक तर्क लेते हैं, हो सकता है कि तर्क विकल्प के तुरंत बाद दिखाई दे, या विकल्प और तर्क के बीच की जगह के साथ: -Ifoo और -I foo का समान प्रभाव होता है।

कई विकल्पों में बहु-अक्षर नाम हैं; इसलिए कई एकल-अक्षर विकल्प समूहीकृत नहीं किए जा सकते हैं : -dM ' -d -M ' से बहुत अलग है।

-D name

एक मैक्रो के रूप में पूर्वनिर्धारित नाम , परिभाषा 1 साथ।

-D name = definition

परिभाषा की सामग्री को टोकन और संसाधित किया जाता है जैसे कि वे ' #define ' निर्देश में अनुवाद चरण तीन के दौरान दिखाई दिए। विशेष रूप से, परिभाषा एम्बेडेड न्यूलाइन वर्णों द्वारा छंटनी की जाती है।

यदि आप शेल या शेल-जैसे प्रोग्राम से प्रीप्रोसेसर को आमंत्रित कर रहे हैं, तो आपको शेल के सिंटैक्स का उपयोग करने की आवश्यकता हो सकती है ताकि शेल सिंटैक्स में अर्थ वाले रिक्त स्थान जैसे वर्णों की रक्षा हो सके।

यदि आप कमांड लाइन पर फ़ंक्शन-जैसे मैक्रो को परिभाषित करना चाहते हैं, तो बराबर तर्क (यदि हो तो) से पहले इसकी तर्क सूची को आसपास के कोष्ठकों के साथ लिखें। कोष्ठक अधिकांश गोले के लिए सार्थक हैं, इसलिए आपको विकल्प चुनना चाहिए। csh और csh ; -D ' नाम ( args ... ) = परिभाषा ' काम करता है।

-D और -U विकल्प कमांड लाइन में दिए गए क्रम में संसाधित होते हैं। सभी -imacros फ़ाइल और -include फ़ाइल विकल्प को सभी -D और -U विकल्पों के बाद संसाधित किया जाता है।

-U name

नाम की किसी भी पिछली परिभाषा को रद्द करें, या तो -D विकल्प के साथ निर्मित या प्रदान की गई।

-include file

प्रक्रिया फ़ाइल जैसे कि #include "file" प्राथमिक स्रोत फ़ाइल की पहली पंक्ति के रूप में दिखाई दी। हालाँकि, फ़ाइल के लिए खोज की गई पहली निर्देशिका मुख्य स्रोत फ़ाइल वाली निर्देशिका के बजाय प्रीप्रोसेसर की कार्यशील निर्देशिका है। अगर वहां नहीं मिला, तो इसे शेष #include "…" खोज श्रृंखला के रूप में सामान्य रूप से खोजा जाता है।

यदि एकाधिक -include विकल्प दिए गए हैं, तो फाइलें कमांड लाइन पर दिखाई देने वाले क्रम में शामिल हैं।

-imacros file

बिल्कुल वैसे ही -include , सिवाय इसके कि स्कैनिंग फ़ाइल द्वारा उत्पादित किसी भी आउटपुट को फेंक दिया जाता है। मैक्रों इसे परिभाषित करते हैं। यह आपको सभी मैक्रोज़ को एक हेडर से हासिल करने की अनुमति देता है वह भी इसकी घोषणाओं को संसाधित किए बिना।

-Imacros द्वारा निर्दिष्ट सभी फाइलें -include द्वारा निर्दिष्ट सभी फाइलों से पहले संसाधित होती हैं।

-undef

किसी भी सिस्टम-विशिष्ट या GCC- विशिष्ट मैक्रो को पूर्वनिर्धारित न करें। मानक पूर्वनिर्धारित मैक्रो परिभाषित रहते हैं। स्टैंडर्ड पूर्वनिर्धारित मैक्रोज़ देखें।

-pthread

POSIX थ्रेड लाइब्रेरी का उपयोग करने के लिए आवश्यक अतिरिक्त मैक्रो को परिभाषित करें। आपको संकलन और लिंकिंग दोनों के लिए इस विकल्प का लगातार उपयोग करना चाहिए। यह विकल्प GNU / Linux लक्ष्य, अधिकांश अन्य यूनिक्स डेरिवेटिव्स, और x86 Cygwin और MinGW लक्ष्यों पर भी समर्थित है।

-M

प्रीप्रोसेसिंग के परिणाम को आउटपुट करने के बजाय, मुख्य स्रोत फ़ाइल की निर्भरता का वर्णन करने के लिए उपयुक्त एक नियम को आउटपुट करें। प्रीप्रोसेसर आउटपुट को एक नियम make जिसमें उस स्रोत फ़ाइल के लिए ऑब्जेक्ट फ़ाइल नाम, एक कोलोन और सभी सम्मिलित फ़ाइलों के नाम शामिल होते हैं, जिसमें -include या -imacros कमांड-लाइन विकल्प शामिल हैं।

जब तक स्पष्ट रूप से ( -MT या -MQ के साथ ) निर्दिष्ट नहीं किया जाता है , ऑब्जेक्ट फ़ाइल का नाम किसी भी प्रत्यय के साथ स्रोत फ़ाइल का नाम होता है जिसे ऑब्जेक्ट फ़ाइल प्रत्यय के साथ बदल दिया जाता है और किसी भी प्रमुख निर्देशिका भागों को हटा दिया जाता है। यदि कई शामिल फाइलें हैं, तो नियम ' \ ' -newline का उपयोग करके कई लाइनों में विभाजित है। नियम की कोई आज्ञा नहीं है।

यह विकल्प प्रीप्रोसेसर के डिबग आउटपुट, जैसे -dM को दबाता नहीं है । निर्भरता के नियमों के साथ इस तरह के डिबग आउटपुट को मिलाने से बचने के लिए आपको -MF के साथ निर्भरता आउटपुट फ़ाइल को स्पष्ट रूप से निर्दिष्ट करना चाहिए, या DEPENDENCIES_OUTPUT जैसे पर्यावरण चर का उपयोग करना चाहिए ( पर्यावरण चर देखें)। डिबग आउटपुट को अभी भी सामान्य के रूप में नियमित आउटपुट स्ट्रीम में भेजा जाता है।

ड्राइवर को पासिंग -M का अर्थ है -E , और एक निहित -w के साथ चेतावनियों को दबा देता है।

-MM

जैसे -M लेकिन ऐसी हेडर फ़ाइलों का उल्लेख नहीं करते हैं जो सिस्टम हेडर निर्देशिकाओं में पाई जाती हैं, और न ही ऐसी हेडर फाइलें, जो प्रत्यक्ष या अप्रत्यक्ष रूप से ऐसे हेडर से शामिल हों।

इसका तात्पर्य यह है कि ' #include ' निर्देश में कोण कोष्ठक या दोहरे कोट्स का चुनाव अपने आप में यह निर्धारित नहीं करता है कि क्या हेडर इन -MM निर्भरता आउटपुट में प्रकट होता है।

-MF file

-M या -MM के साथ उपयोग किए जाने पर , निर्भरताएँ लिखने के लिए एक फ़ाइल निर्दिष्ट करता है। यदि कोई -MF स्विच नहीं दिया जाता है तो प्रीप्रोसेसर उसी स्थान पर नियम भेजता है जो प्रीप्रोसेड आउटपुट भेजता है।

ड्राइवर विकल्पों के साथ उपयोग किए जाने पर -MD या -MMD ; -MF डिफ़ॉल्ट निर्भरता आउटपुट फ़ाइल को ओवरराइड करता है।

-MG

एक विकल्प के साथ संयोजन के रूप में -M अनुरोध निर्भरता पीढ़ी, -MG मानता है कि हेडर लापता फाइलें उत्पन्न होती हैं और उन्हें बिना किसी त्रुटि के निर्भरता सूची में जोड़ देती हैं। निर्भरता फ़ाइल नाम सीधे किसी भी मार्ग से बाहर निकले बिना #include निर्देश से लिया जाता है। -एमजी प्रीप्रोसेड आउटपुट को भी दबा देता है, क्योंकि एक लापता हेडर फाइल इस बेकार को प्रस्तुत करती है।

इस सुविधा का उपयोग मेकफाइल्स के स्वचालित अद्यतन में किया जाता है।

-MP

यह विकल्प सीपीपी को निर्देश देता है कि वह मुख्य फाइल के अलावा प्रत्येक निर्भरता के लिए एक टॉनी टारगेट जोड़ें, जिससे प्रत्येक कुछ भी निर्भर न हो। ये डमी नियम त्रुटियों के आसपास काम करते हैं make अगर आप मेकफाइल को मिलान के बिना अपडेट किए बिना हेडर फ़ाइलों को हटा देते हैं।

यह विशिष्ट उत्पादन है:

test.o: test.c test.h

test.h:
-MT target

निर्भरता पीढ़ी द्वारा उत्सर्जित नियम के लक्ष्य को बदलें। डिफ़ॉल्ट रूप से सीपीपी मुख्य इनपुट फ़ाइल का नाम लेता है, किसी भी निर्देशिका घटकों को हटाता है और किसी भी फ़ाइल प्रत्यय जैसे ' .c ' को हटाता है, और प्लेटफ़ॉर्म के सामान्य ऑब्जेक्ट प्रत्यय को जोड़ता है। परिणाम लक्ष्य है।

AnMT विकल्प आपके द्वारा निर्दिष्ट स्ट्रिंग के ठीक होने का लक्ष्य निर्धारित करता है। यदि आप कई लक्ष्य चाहते हैं, तो आप उन्हें -MT के एकल तर्क के रूप में निर्दिष्ट कर सकते हैं, या कई -MT विकल्पों का उपयोग कर सकते हैं।

उदाहरण के लिए, -MT '$(objpfx)foo.o' दे सकता है

$(objpfx)foo.o: foo.c
-MQ target

-MT के समान, लेकिन यह किसी भी वर्ण को उद्धृत करता है जो मेक के लिए विशेष है। -MQ '$(objpfx)foo.o' देता है

$$(objpfx)foo.o: foo.c

डिफ़ॉल्ट लक्ष्य स्वचालित रूप से उद्धृत किया जाता है, जैसे कि इसे -MQ के साथ दिया गया था।

-MD

-एमडी -एम-एमएफ फ़ाइल के बराबर है, सिवाय इसके कि -ई निहित नहीं है। ड्राइवर एक -o विकल्प दिए जाने के आधार पर फ़ाइल निर्धारित करता है। यदि यह है, तो ड्राइवर अपने तर्क का उपयोग करता है, लेकिन .d के एक प्रत्यय के साथ, अन्यथा यह इनपुट फ़ाइल का नाम लेता है, किसी भी निर्देशिका घटकों और प्रत्यय को हटाता है, और .d प्रत्यय को लागू करता है।

यदि -MD का उपयोग के साथ संयोजन में किया जाता है, तो निर्भरता आउटपुट फ़ाइल (देखें -MF ) को निर्दिष्ट करने के लिए किसी भी -o स्विच को समझा जाता है, लेकिन यदि -E के बिना उपयोग किया जाता है, तो प्रत्येक -o को लक्ष्य ऑब्जेक्ट फ़ाइल निर्दिष्ट करने के लिए समझा जाता है।

चूंकि -ई निहित नहीं है, -एमडी का उपयोग संकलन प्रक्रिया के साइड-इफेक्ट के रूप में एक निर्भरता आउटपुट फाइल उत्पन्न करने के लिए किया जा सकता है।

-MMD

जैसे -MD केवल उपयोगकर्ता हेडर फ़ाइलों का उल्लेख करता है, न कि सिस्टम हेडर फाइलें।

-fpreprocessed

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

- यदि फ़ाइल में एक्सटेंशन में से एक ' .i ', ' .ii ' या ' .mi ' है, तो -fproprocessed निहित है । ये वो एक्सटेंशन हैं, जो जीसीसी प्री-रियायती फाइलों के लिए उपयोग करता है, जो कि -save -temps द्वारा निर्मित हैं।

-fdirectives-only

प्रीप्रोसेसिंग करते समय, निर्देशों को संभालें, लेकिन मैक्रोज़ का विस्तार न करें।

विकल्प का व्यवहार -E और -fpreprocessed विकल्पों पर निर्भर करता है।

साथ -E , प्रीप्रोसेसिंग #define , #error , और #error जैसे निर्देशों की हैंडलिंग तक सीमित है। अन्य प्रीप्रोसेसर संचालन, जैसे मैक्रो विस्तार और ट्रिगर रूपांतरण नहीं किए जाते हैं। इसके अलावा, -dD विकल्प को अंतर्निहित रूप से सक्षम किया गया है।

-Fpreprocessed के साथ, कमांड लाइन और अधिकांश बिलिन मैक्रो को पूर्वनिर्धारित किया जाता है। मैक्रोज़ जैसे __LINE__ , जो प्रासंगिक रूप से निर्भर हैं, सामान्य रूप से नियंत्रित किए जाते हैं। यह पहले से -E -fdirectives-only साथ पहले से तैयार फ़ाइलों के संकलन को सक्षम करता है।

दोनों के साथ -E और -fpreprocessed , -fpreprocessed के लिए नियम पूर्वता लेते हैं। यह पूरी तरह से पहले से तैयार की गई फाइलों को पूरी तरह से सक्षम करने में सक्षम बनाता है -E -fdirectives-only

-fdollars-in-identifiers

पहचानकर्ताओं में ' $ ' को स्वीकार करें। पहचानकर्ता वर्ण देखें।

-fextended-identifiers

पहचानकर्ताओं में सार्वभौमिक चरित्र नाम स्वीकार करें। यह विकल्प C99 (और बाद में C मानक संस्करण) और C ++ के लिए डिफ़ॉल्ट रूप से सक्षम है।

-fno-canonical-system-headers

जब प्रीप्रोसेसिंग करते हैं, तो कैनोनिकलाइज़ेशन के साथ सिस्टम हेडर पथ को छोटा न करें।

-ftabstop= width

टैब स्टॉप के बीच की दूरी निर्धारित करें। यह पूर्वप्रक्रमक रिपोर्ट में स्तंभों की सही संख्या को चेतावनी या त्रुटियों में मदद करता है, भले ही टैब लाइन पर दिखाई दें। यदि मान 1 से कम या 100 से अधिक है, तो विकल्प को अनदेखा कर दिया जाता है। डिफ़ॉल्ट 8 है।

-ftrack-macro-expansion [ = level ]

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

ध्यान दें कि -ftrack-macro-expansion=2 डिफ़ॉल्ट रूप से सक्रिय है।

-fexec-charset= charset

निष्पादन वर्ण सेट, स्ट्रिंग और चरित्र स्थिरांक के लिए उपयोग किया जाता है। डिफ़ॉल्ट UTF-8 है। charset सिस्टम के iconv लाइब्रेरी रूटीन द्वारा समर्थित कोई भी एन्कोडिंग हो सकता है।

-fwide-exec-charset= charset

विस्तृत स्ट्रिंग वर्ण सेट करें, जिसका उपयोग विस्तृत स्ट्रिंग और चरित्र स्थिरांक के लिए किया जाता है। डिफ़ॉल्ट UTF-32 या UTF-16 है, जो भी wchar_t की चौड़ाई से मेल खाती है। जैसे -fexec-charset के साथ , charset सिस्टम के iconv लाइब्रेरी रूटीन द्वारा समर्थित किसी भी एन्कोडिंग हो सकता है; हालाँकि, आपको एन्कोडिंग के साथ समस्याएँ होंगी जो wchar_t में बिल्कुल फिट नहीं हैं।

-finput-charset= charset

इनपुट कैरेक्टर सेट को सेट करें, जो इनपुट फ़ाइल के कैरेक्टर सेट से ट्रांसलेशन के लिए इस्तेमाल किया जाता है, जो जीसीसी द्वारा इस्तेमाल किया जाता है। यदि लोकेल निर्दिष्ट नहीं करता है, या जीसीसी को लोकल से यह जानकारी नहीं मिल सकती है, तो डिफ़ॉल्ट UTF-8 है। इसे लोकेल या इस कमांड-लाइन विकल्प द्वारा ओवरराइड किया जा सकता है। वर्तमान में कमांड-लाइन विकल्प पूर्ववर्तीता लेता है यदि कोई विरोध हो। charset सिस्टम के iconv लाइब्रेरी रूटीन द्वारा समर्थित कोई भी एन्कोडिंग हो सकता है।

-fworking-directory

प्रीप्रोसेसर आउटपुट में लाइनमार्कर्स की जेनरेशन सक्षम करें जो कंपाइलर को प्रीप्रोसेसिंग के समय करंट वर्किंग डायरेक्टरी की जानकारी दें। जब इस विकल्प को सक्षम किया जाता है, तो प्रीप्रोसेसर उत्सर्जित करता है, प्रारंभिक लाइनमार्कर के बाद, दूसरा वर्कशॉप जिसमें वर्तमान वर्किंग डाइरेक्टरी है, उसके बाद दो स्लैश आते हैं। जीसीसी इस निर्देशिका का उपयोग करता है, जब यह प्रीप्रोसेड इनपुट में मौजूद होता है, जैसा कि कुछ डिबगिंग फॉर्मेट में वर्तमान वर्किंग डायरेक्टरी के रूप में उत्सर्जित निर्देशिका है। यदि डिबगिंग जानकारी सक्षम है, तो यह विकल्प अंतर्निहित रूप से सक्षम है, लेकिन यह उपेक्षित फ़ॉर्म -fno-working-directory के साथ बाधित हो सकता है। यदि कमांड लाइन में -P झंडा मौजूद है, तो इस विकल्प का कोई प्रभाव नहीं पड़ता है, क्योंकि कोई भी #line निर्देश किसी भी तरह से उत्सर्जित नहीं किया जाता है।

-A predicate = answer

विधेय विधेय और उत्तर का उत्तर दें । यह प्रपत्र पुराने रूप में पसंद किया जाता है- एक विधेय ( उत्तर ) , जो अभी भी समर्थित है, क्योंकि यह शेल विशेष वर्णों का उपयोग नहीं करता है। देखें अप्रचलित सुविधाएँ

-A - predicate = answer

विधेय विधेय और उत्तर का उत्तर दें

-C

टिप्पणियों को त्यागें नहीं। सभी टिप्पणियां आउटपुट फ़ाइल के माध्यम से पारित हो जाती हैं, संसाधित निर्देशों में टिप्पणियों को छोड़कर, जो निर्देश के साथ हटा दी जाती हैं।

-C का उपयोग करते समय आपको दुष्प्रभावों के लिए तैयार रहना चाहिए; यह प्रीप्रोसेसर को अपने आप में टोकन के रूप में टिप्पणियों का इलाज करने का कारण बनता है। उदाहरण के लिए, एक निर्देश रेखा क्या होगी, इसकी शुरुआत में दिखाई देने वाली टिप्पणियों में उस रेखा को एक साधारण स्रोत लाइन में बदलने का प्रभाव होता है, क्योंकि लाइन पर पहला टोकन अब ' # ' नहीं है।

-CC

मैक्रो विस्तार के दौरान सहित टिप्पणियों को त्यागें नहीं। यह -C जैसा है, सिवाय इसके कि मैक्रोज़ के भीतर मौजूद टिप्पणियां भी आउटपुट फ़ाइल से होकर गुजरती हैं जहाँ मैक्रो का विस्तार होता है।

-C विकल्प के साइड-इफेक्ट्स के अलावा, -CC विकल्प सभी C ++ - शैली टिप्पणियों को एक मैक्रो के अंदर C- शैली टिप्पणियों में परिवर्तित करने का कारण बनता है। यह उस मैक्रो के बाद के उपयोग को अनजाने में स्रोत लाइन के शेष को टिप्पणी करने से रोकने के लिए है।

-CC विकल्प का उपयोग आमतौर पर लिंट टिप्पणियों का समर्थन करने के लिए किया जाता है।

-P

प्रीप्रोसेसर से आउटपुट में लाइनमार्कर्स का अवरोध उत्पन्न करता है। यह उस समय उपयोगी हो सकता है जब किसी चीज पर प्रीप्रोसेसर चल रहा हो जो C कोड नहीं है, और एक प्रोग्राम को भेजा जाएगा जो कि linmarkers द्वारा भ्रमित हो सकता है। प्रीप्रोसेसर आउटपुट देखें।

-traditional
-traditional-cpp

आईएसओ सी प्रीप्रोसेसरों के विपरीत, पूर्व-मानक सी प्रीप्रोसेसरों के व्यवहार की नकल करने की कोशिश करें। पारंपरिक मोड देखें।

ध्यान दें कि जीसीसी अन्यथा पूर्व-मानक सी कंपाइलर का अनुकरण करने का प्रयास नहीं करता है, और ये विकल्प केवल -ई स्विच के साथ समर्थित हैं, या सीपीपी को स्पष्ट रूप से लागू करते समय।

-trigraphs

समर्थन आईएसओ सी ट्रिगर। ये तीन-वर्ण क्रम हैं, सभी 'के साथ शुरू होते हैं ?? ', कि आईएसओ सी द्वारा परिभाषित कर रहे हैं एकल पात्रों के लिए खड़े हो जाओ। उदाहरण के लिए, ' ?? / ' का अर्थ ' \ ' है, इसलिए ' ' ?? / n ' ' एक नई रेखा के लिए एक चरित्र स्थिर है। प्रारंभिक प्रसंस्करण देखें।

डिफ़ॉल्ट रूप से, जीसीसी ट्रिगर को अनदेखा करता है, लेकिन मानक-अनुरूप मोड में यह उन्हें परिवर्तित करता है। -Std और -ansi विकल्प देखें।

-remap

फ़ाइल सिस्टम के आसपास काम करने के लिए विशेष कोड सक्षम करें जो केवल MS-DOS जैसे बहुत कम फ़ाइल नामों की अनुमति देता है।

-H

अन्य सामान्य गतिविधियों के अलावा, उपयोग की गई प्रत्येक हेडर फ़ाइल का नाम प्रिंट करें। प्रत्येक नाम यह दर्शाने के लिए प्रेरित है कि ' #include ' स्टैक कितना गहरा है। Precompiled शीर्ष लेख फ़ाइलें भी मुद्रित होती हैं, भले ही वे अमान्य पाई गई हों; एक अमान्य precompiled हेडर फ़ाइल ' ... x ' और 'वैध' के साथ मुद्रित होती है ...! '।

-d letters

अक्षरों द्वारा निर्दिष्ट संकलन के दौरान डिबगिंग डंप बनाने के लिए कहते हैं। यहाँ प्रलेखित झंडे प्रीप्रोसेसर के लिए प्रासंगिक हैं। अन्य अक्षरों को कंपाइलर द्वारा उचित रूप से व्याख्या किया जाता है, या जीसीसी के भविष्य के संस्करणों के लिए आरक्षित किया जाता है, और इसलिए चुपचाप नजरअंदाज कर दिया जाता है। यदि आप उन पत्रों को निर्दिष्ट करते हैं जिनके व्यवहार में संघर्ष होता है, तो परिणाम अपरिभाषित होता है।

-dM

सामान्य आउटपुट के बजाय, पूर्वनिर्मित मैक्रोज़ सहित प्रीप्रोसेसर के निष्पादन के दौरान परिभाषित सभी मैक्रोज़ के लिए ' #define ' निर्देशों की एक सूची तैयार करें। यह आपको यह पता लगाने का एक तरीका देता है कि प्रीप्रोसेसर के आपके संस्करण में क्या पूर्वनिर्धारित है। मान लें कि आपके पास कोई फ़ाइल foo.h , कमांड नहीं है

touch foo.h; cpp -dM foo.h

सभी पूर्वनिर्धारित मैक्रोज़ दिखाता है।

-dD

जैसे -dM दो तरह से छोड़कर: इसमें पूर्वनिर्धारित मैक्रो शामिल नहीं है , और यह ' #define ' निर्देशों और प्रीप्रोसेसिंग के परिणाम दोनों को आउटपुट करता है। दोनों प्रकार के आउटपुट मानक आउटपुट फ़ाइल पर जाते हैं।

-dN

जैसे -DD , लेकिन केवल स्थूल नामों का उत्सर्जन करते हैं, उनके विस्तार का नहीं।

-dI

प्रीप्रोसेसिंग के परिणाम के अलावा आउटपुट ' #include ' निर्देश।

-dU

जैसे -dD को छोड़कर केवल मैक्रोज़ का विस्तार किया जाता है, या जिनकी परिभाषितता प्रीप्रोसेसर निर्देशों में परीक्षण की जाती है, आउटपुट हैं; मैक्रो के उपयोग या परीक्षण तक आउटपुट में देरी होती है; और ' # कुंडली ' के निर्देश भी मैक्रोज़ परीक्षण के लिए आउटपुट हैं लेकिन उस समय अपरिभाषित हैं।

-fdebug-cpp

यह विकल्प केवल GCC डिबगिंग के लिए उपयोगी है। जब सीपीपी या ई के साथ उपयोग किया जाता है, तो यह लोकेशन मैप्स के बारे में डिबगिंग जानकारी को डंप करता है। आउटपुट में प्रत्येक टोकन मैप के डंप से पहले होता है, जिसका स्थान इसके अंतर्गत आता है।

जब जीसीसी के बिना से उपयोग किया जाता है, तो इस विकल्प का कोई प्रभाव नहीं पड़ता है।

-I dir
-iquote dir
-isystem dir
-idirafter dir

प्रीप्रोसेसिंग के दौरान शीर्ष लेख फ़ाइलों के लिए खोज की जाने वाली निर्देशिकाओं की सूची में निर्देशिका निर्देशिका जोड़ें। खोज पथ देखें। यदि dir ' = ' से शुरू होता है, तो ' = ' को sysroot उपसर्ग से बदल दिया जाता है; देखें - सिसरोट और -आईसिरोट

-Iquote के साथ निर्दिष्ट निर्देशिका केवल निर्देश के उद्धरण फ़ॉर्म पर लागू होती है, #include " file " --I , -isystem , या -idirafter के साथ निर्दिष्ट निर्देशिका दोनों #include " file " और #include < file > निर्देशों के लिए देखने के लिए लागू होते हैं।

आप कई निर्देशिकाओं में शीर्ष लेख फ़ाइलों की खोज करने के लिए कमांड लाइन पर इन विकल्पों में से किसी भी संख्या या संयोजन को निर्दिष्ट कर सकते हैं। देखने का क्रम इस प्रकार है:

  1. शामिल निर्देश के उद्धरण रूप के लिए, वर्तमान फ़ाइल की निर्देशिका पहले खोजी गई है।
  2. शामिल निर्देश के उद्धरण रूप के लिए, -iquote द्वारा निर्दिष्ट निर्देशिकाओं को बाएं से दाएं क्रम में खोजा जाता है, क्योंकि वे कमांड लाइन पर दिखाई देते हैं।
  3. -I विकल्पों के साथ निर्दिष्ट निर्देशिकाएं बाएं से दाएं क्रम में स्कैन की जाती हैं।
  4. -Isystem विकल्पों के साथ निर्दिष्ट निर्देशिकाएं बाएं से दाएं क्रम में स्कैन की जाती हैं।
  5. मानक प्रणाली निर्देशिकाओं को स्कैन किया जाता है।
  6. -निर्धारित विकल्पों के साथ निर्दिष्ट निर्देशिकाओं को बाएं से दाएं क्रम में स्कैन किया जाता है।

आप एक सिस्टम हेडर फ़ाइल को ओवरराइड करने के लिए -I का उपयोग कर सकते हैं, अपने स्वयं के संस्करण को प्रतिस्थापित कर सकते हैं, क्योंकि इन निर्देशिकाओं को मानक सिस्टम हेडर फ़ाइल निर्देशिकाओं से पहले खोजा जाता है। हालाँकि, आपको इस विकल्प का उपयोग उन निर्देशिकाओं को जोड़ने के लिए नहीं करना चाहिए जिनमें विक्रेता द्वारा आपूर्ति की गई सिस्टम हेडर फाइलें हैं; उस के लिए उपयोग- प्रणाली

-Isystem और -idirafter ऑप्शंस भी डायरेक्टरी को सिस्टम डायरेक्टरी के रूप में चिन्हित करते हैं, ताकि उसे वही स्पेशल ट्रीटमेंट मिले जो स्टैंडर्ड सिस्टम डायरेक्ट्रीज़ पर लागू होता है। सिस्टम हेडर देखें।

यदि एक मानक प्रणाली में निर्देशिका शामिल है, या -isystem के साथ निर्दिष्ट एक निर्देशिका -I के साथ भी निर्दिष्ट है, तो -I विकल्प को अनदेखा किया जाता है। निर्देशिका को अभी भी खोजा गया है लेकिन सिस्टम में सामान्य स्थिति में सिस्टम निर्देशिका के रूप में श्रृंखला में शामिल हैं। यह सुनिश्चित करना है कि छोटी गाड़ी प्रणाली हेडर को ठीक करने के लिए जीसीसी की प्रक्रिया और #include_next निर्देश के लिए आदेश अनजाने में नहीं बदले हैं। यदि आपको वास्तव में सिस्टम निर्देशिकाओं के लिए खोज क्रम को बदलने की आवश्यकता है, तो -nostdinc और / या -isystem विकल्पों का उपयोग करें। सिस्टम हेडर देखें।

-I-

पथ शामिल करें। इस विकल्प को हटा दिया गया है। कृपया -I- से पहले -I निर्देशिकाओं के बजाय -iquote का उपयोग करें और -I- विकल्प को हटा दें।

-I- से पहले -I विकल्पों के साथ निर्दिष्ट कोई भी निर्देशिका केवल #include " file " साथ अनुरोध किए गए हेडर के लिए खोज की जाती है; वे #include < file > लिए नहीं खोजे गए हैं। यदि अतिरिक्त निर्देशिकाओं को -I- के बाद -I विकल्पों के साथ निर्दिष्ट किया जाता है , तो उन निर्देशिकाओं को सभी ' #include ' निर्देशों के लिए खोजा जाता है।

इसके अलावा, -I- #include " file " लिए पहली खोज निर्देशिका के रूप में वर्तमान फ़ाइल निर्देशिका की निर्देशिका के उपयोग को रोकता है। -I- के इस प्रभाव को ओवरराइड करने का कोई तरीका नहीं है। खोज पथ देखें।

-iprefix prefix

बाद के विकल्पों के लिए उपसर्ग के रूप में उपसर्ग निर्दिष्ट करें। यदि उपसर्ग किसी निर्देशिका का प्रतिनिधित्व करता है, तो आपको अंतिम ' / ' शामिल करना चाहिए।

-iwithprefix dir
-iwithprefixbefore dir

पहले -iprefix के साथ निर्दिष्ट उपसर्ग के लिए dir जोड़ें, और परिणामी निर्देशिका को खोज पथ में शामिल करें। -विपरीतप्रतिभोज इसे उसी स्थान पर रखता है- मैं करूंगा; -विपरीत उपसर्ग इसे जहां-जहां तक चाहे वहां डालता है।

-isysroot dir

यह विकल्प - sysroot विकल्प की तरह है, लेकिन यह केवल हेडर फ़ाइलों (डार्विन लक्ष्यों को छोड़कर, जहां यह हेडर फ़ाइलों और पुस्तकालयों दोनों पर लागू होता है) पर लागू होता है। अधिक जानकारी के लिए --sysroot विकल्प देखें।

-imultilib dir

निर्देशिका का उपनिर्देशिका के रूप में लक्ष्य-विशिष्ट C ++ हेडर युक्त उपनिर्देशिका के रूप में उपयोग करें।

-nostdinc

हेडर फ़ाइलों के लिए मानक सिस्टम निर्देशिकाओं को न खोजें। केवल निर्देशिका को स्पष्ट रूप से निर्दिष्ट किया जाता है -I , -iquote , -isystem , और / या -idirafter विकल्प (और यदि उपयुक्त हो तो वर्तमान फ़ाइल की निर्देशिका)।

-nostdinc++

C ++ - विशिष्ट मानक निर्देशिकाओं में शीर्ष लेख फ़ाइलों की खोज न करें, लेकिन फिर भी अन्य मानक निर्देशिकाओं को खोजें। (C ++ लाइब्रेरी बनाते समय इस विकल्प का उपयोग किया जाता है।)

-Wcomment
-Wcomments

चेतावनी दें कि जब भी एक टिप्पणी-प्रारंभ अनुक्रम ' / * ' ' / ' टिप्पणी में दिखाई देता है, या जब भी एक ' // ' टिप्पणी में बैकस्लैश-न्यूलाइन दिखाई देता है। यह चेतावनी -Wall द्वारा सक्षम है।

-Wtrigraphs

चेतावनी दें कि यदि कोई ट्रिग्राफ सामने आया है जो प्रोग्राम का अर्थ बदल सकता है। टिप्पणियों के भीतर ट्रिग्राफ के बारे में चेतावनी नहीं दी जाती है, सिवाय इसके कि वे नए सिरे से बच जाएंगे।

यह विकल्प द्वारा निहित है -वह । If -all नहीं दिया गया है, यह विकल्प अभी भी सक्षम है जब तक कि ट्रिग्राफ सक्षम नहीं हैं। चेतावनियों के बिना ट्रिग्राफ रूपांतरण प्राप्त करने के लिए, लेकिन अन्य चेतावनी प्राप्त करें, ' -trigraphs -Wall -Wno-trigraphs ' का उपयोग करें।

-Wundef

चेतावनी अगर एक अपरिभाषित पहचानकर्ता का मूल्यांकन #if निर्देश में किया जाता है। ऐसे पहचानकर्ताओं को शून्य से बदल दिया जाता है।

-Wexpansion-to-defined

चेतावनी दें जब भी ' परिभाषित ' एक मैक्रो के विस्तार में सामना किया जाता है (मामले में जहां मैक्रो ' #if ' निर्देश द्वारा विस्तारित होता है)। ऐसा उपयोग पोर्टेबल नहीं है। यह चेतावनी -Wpedantic और -Wextra द्वारा भी सक्षम है।

-Wunused-macros

मैक्रों के बारे में चेतावनी मुख्य फाइल में परिभाषित है जो अप्रयुक्त हैं। एक मैक्रो का उपयोग किया जाता है यदि इसे कम से कम एक बार अस्तित्व के लिए विस्तारित या परीक्षण किया जाता है। प्रीप्रोसेसर भी चेतावनी देता है कि क्या मैक्रो का उपयोग उस समय तक नहीं किया गया है जब इसे फिर से परिभाषित या अपरिभाषित किया गया हो।

अंतर्निहित मैक्रोज़, कमांड लाइन पर परिभाषित मैक्रोज़, और फ़ाइलों को शामिल करने के लिए परिभाषित मैक्रोज़ के बारे में चेतावनी नहीं दी गई है।

नोट: यदि कोई मैक्रो वास्तव में उपयोग किया जाता है, लेकिन केवल स्किड सशर्त ब्लॉकों में उपयोग किया जाता है, तो प्रीप्रोसेसर इसे अप्रयुक्त के रूप में रिपोर्ट करता है। ऐसे मामले में चेतावनी से बचने के लिए, आप मैक्रो की परिभाषा के दायरे में सुधार कर सकते हैं, उदाहरण के लिए, इसे पहले छोड़े गए ब्लॉक में ले जाना। वैकल्पिक रूप से, आप कुछ के साथ एक डमी उपयोग प्रदान कर सकते हैं:

#if defined the_macro_causing_the_warning
#endif
-Wno-endif-labels

जब भी कोई #else या #endif पाठ के बाद #else तो उसे चेतावनी न दें। यह कभी-कभी पुराने कार्यक्रमों में फॉर्म के कोड के साथ होता है

#if FOO
…
#else FOO
…
#endif FOO

दूसरा और तीसरा FOO टिप्पणियों में होना चाहिए। यह चेतावनी डिफ़ॉल्ट रूप से चालू है।

अगला: पर्यावरण चर , पिछला: कार्यान्वयन विवरण , ऊपर: [ Contents ] [ Index ]