GCC 7.3 - 9. Preprocessor Output

9 प्रीप्रोसेसर आउटपुट




gcc

9 प्रीप्रोसेसर आउटपुट

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

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

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

स्रोत फ़ाइल का नाम और लाइन नंबर की जानकारी फॉर्म की लाइनों द्वारा बताई गई है

# linenum filename flags

इन्हें लाइनमार्क कहा जाता है। उन्हें आउटपुट में आवश्यकतानुसार डाला जाता है (लेकिन स्ट्रिंग या कैरेक्टर के भीतर कभी नहीं)। उनका मतलब है कि लाइन लिनेनम में फ़ाइल नाम में निम्नलिखित लाइन उत्पन्न हुई। फ़ाइल नाम में कोई भी गैर-मुद्रण वर्ण नहीं होगा; उन्हें ऑक्टल एस्केप सीक्वेंस के साथ बदल दिया जाता है।

फ़ाइल नाम के बाद शून्य या अधिक झंडे आते हैं, जो ' 1 ', ' 2 ', ' 3 ' या ' 4 ' हैं। यदि कई झंडे हैं, तो रिक्त स्थान उन्हें अलग करते हैं। यहाँ झंडे का मतलब है:

' 1 '

यह एक नई फ़ाइल की शुरुआत को इंगित करता है।

''

यह एक फ़ाइल पर लौटने का संकेत देता है (दूसरी फ़ाइल को शामिल करने के बाद)।

' 3 '

यह इंगित करता है कि निम्न पाठ एक सिस्टम हेडर फ़ाइल से आता है, इसलिए कुछ चेतावनियों को दबा दिया जाना चाहिए।

''

यह इंगित करता है कि निम्नलिखित पाठ को एक अंतर्निहित extern "C" ब्लॉक में लपेटा जाना चाहिए।

एक एक्सटेंशन के रूप में, प्रीप्रोसेसर नॉन-एसेम्बलर इनपुट फाइलों में लाइनमार्क को स्वीकार करता है। उन्हें इसी # # लाइन ’निर्देश के समान माना जाता है, ( लाइन कंट्रोल देखें), सिवाय इसके कि झंडे के झंडे की अनुमति है, और ऊपर वर्णित अर्थों के साथ व्याख्या की गई है। यदि कई झंडे दिए गए हैं, तो उन्हें आरोही क्रम में होना चाहिए।

कुछ निर्देशों को प्रीप्रोसेसर के आउटपुट में डुप्लिकेट किया जा सकता है। ये ' #ident ' (हमेशा), ' #pragma ' हैं (केवल अगर प्रीप्रोसेसर ही प्रैग्‍मा को हैंडल नहीं करता है), और ' #define ' और ' #undef ' (कुछ डिबगिंग विकल्‍पों के साथ)। यदि ऐसा होता है, तो निर्देश का ' # ' हमेशा पहले कॉलम में होगा, और ' # ' और निर्देश के नाम के बीच कोई स्थान नहीं होगा। यदि मैक्रो विस्तार टोकन उत्पन्न करने के लिए होता है जिसे एक नकली निर्देश के लिए गलत किया जा सकता है, तो ' # ' और निर्देश नाम के बीच एक स्थान डाला जाएगा।

अगला: पारंपरिक मोड , पिछला: अन्य निर्देश , ऊपर: Top [ Contents ] [ Index ]