GCC 7.3 - 1.4. The preprocessing language

१.४ प्रीप्रोसेसिंग भाषा




gcc

१.४ प्रीप्रोसेसिंग भाषा

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

प्रीप्रोसेसिंग भाषा में निष्पादन के निर्देश होते हैं और मैक्रोज़ का विस्तार किया जाना है। इसकी प्राथमिक क्षमताएं हैं:

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

कुछ और, कम उपयोगी, सुविधाएँ हैं।

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

' # ' जो एक निर्देशन शुरू करता है वह स्थूल विस्तार से नहीं आ सकता है। इसके अलावा, निर्देश नाम का विस्तार मैक्रो नहीं है। इस प्रकार, अगर foo को परिभाषित करने के लिए एक मैक्रो विस्तार के रूप में परिभाषित किया गया है, जो ' #foo ' को एक वैध प्रीप्रोसेसिंग निर्देश नहीं बनाता है।

मान्य निर्देश नामों का सेट निश्चित है। प्रोग्राम नए प्रीप्रोसेसिंग निर्देशों को परिभाषित नहीं कर सकते हैं।

कुछ निर्देशों के लिए तर्कों की आवश्यकता होती है; ये शेष निर्देश रेखा को बनाते हैं और निर्देश नाम को व्हाट्सएप से अलग करना चाहिए। उदाहरण के लिए, ' #define ' को मैक्रो नाम और मैक्रो के इच्छित विस्तार के बाद होना चाहिए।

एक प्रीप्रोसेसिंग निर्देश एक से अधिक लाइन को कवर नहीं कर सकता है। हालाँकि, लाइन को बैकस्लैश-न्यूलाइन के साथ या ब्लॉक टिप्पणी के द्वारा जारी रखा जा सकता है, जो लाइन के अंत तक फैली हुई है। या तो मामले में, जब निर्देश संसाधित किया जाता है, तो पहले से ही एक लंबी लाइन बनाने के लिए पहली पंक्ति के साथ विलय कर दिया गया है।

पिछला: Tokenization , ऊपर: Overview [ Contents ] [ Index ]