सी प्रीप्रोसेसर कंपाइलर का हिस्सा नहीं है, लेकिन संकलन प्रक्रिया में एक अलग कदम है। सरल शब्दों में, एक सी प्रीप्रोसेसर सिर्फ एक टेक्स्ट प्रतिस्थापन उपकरण है और यह संकलक को वास्तविक संकलन से पहले आवश्यक पूर्व-प्रसंस्करण करने का निर्देश देता है। हम सी प्रीप्रोसेसर को सीपीपी के रूप में संदर्भित करेंगे।
सभी प्रीप्रोसेसर कमांड हैश सिंबल (#) से शुरू होते हैं। यह पहला गैर-रिक्त वर्ण होना चाहिए, और पठनीयता के लिए, पहले कॉलम में एक प्रीप्रोसेसर निर्देश शुरू होना चाहिए। निम्न अनुभाग सभी महत्वपूर्ण प्रीप्रोसेसर निर्देशों को सूचीबद्ध करता है -
Sr.No | निर्देश और विवरण |
---|---|
1 | #परिभाषित करें एक प्रीप्रोसेसर मैक्रो को प्रतिस्थापित करता है। |
2 | #शामिल करें किसी अन्य फ़ाइल से एक विशेष शीर्षलेख सम्मिलित करता है। |
3 | #undef प्रीप्रोसेसर मैक्रो को अपरिभाषित करता है। |
4 | #ifdef यदि यह मैक्रो परिभाषित किया गया है, तो सत्य लौटाता है। |
5 | #ifndef यदि यह मैक्रो परिभाषित नहीं है तो सत्य लौटाता है। |
6 | #if परीक्षण करें कि क्या संकलन समय की स्थिति सत्य है। |
7 | #else #if के लिए विकल्प। |
8 | #elif #else और #if एक कथन में। |
9 | #endif प्रीप्रोसेसर सशर्त समाप्त होता है। |
10 | #त्रुटि Stderr पर त्रुटि संदेश प्रिंट करता है। |
11 | #pragma एक मानकीकृत विधि का उपयोग करके संकलक को विशेष आदेश जारी करता है। |
प्रीप्रोसेसरों के कुछ उदाहरण -
विभिन्न निर्देशों को समझने के लिए निम्नलिखित उदाहरणों का विश्लेषण करें।
#define MAX_ARRAY_LENGTH 20
यह निर्देश सीपीपी को MAX_ARRAY_LENGTH के उदाहरणों को 20 से बदलने के लिए कहता है। पठनीयता बढ़ाने के लिए स्थिरांक के लिए #define का उपयोग करें।
#include <stdio.h> #include "myheader.h"
ये निर्देश सीपीपी को सिस्टम लाइब्रेरी . से stdio.h प्राप्त करने के लिए कहते हैं और पाठ को वर्तमान स्रोत फ़ाइल में जोड़ें। अगली पंक्ति सीपीपी को myheader.h . प्राप्त करने के लिए कहती है स्थानीय निर्देशिका से और सामग्री को वर्तमान स्रोत फ़ाइल में जोड़ें।
#undef FILE_SIZE #define FILE_SIZE 42
यह CPP को मौजूदा FILE_SIZE को अपरिभाषित करने और इसे 42 के रूप में परिभाषित करने के लिए कहता है।
#ifndef MESSAGE #define MESSAGE "You wish!" #endif
यह CPP को केवल तभी MESSAGE को परिभाषित करने के लिए कहता है जब MESSAGE पहले से परिभाषित न हो।
#ifdef DEBUG /* Your debugging statements here */ #endif
यह CPP को DEBUG परिभाषित होने पर संलग्न कथनों को संसाधित करने के लिए कहता है। यह उपयोगी है यदि आप संकलन के समय -डीडीईबीयूजी ध्वज जीसीसी कंपाइलर को पास करते हैं। यह DEBUG को परिभाषित करेगा, जिससे आप संकलन के दौरान डिबगिंग को चालू और बंद कर सकते हैं।
पूर्वनिर्धारित मैक्रोज़ -
एएनएसआई सी कई मैक्रोज़ को परिभाषित करता है। हालांकि हर एक प्रोग्रामिंग में उपयोग के लिए उपलब्ध है, पूर्वनिर्धारित मैक्रोज़ को सीधे संशोधित नहीं किया जाना चाहिए।
Sr.No | मैक्रो और विवरण |
---|---|
1 | __DATE__ "MMM DD YYYY" प्रारूप में अक्षर अक्षर के रूप में वर्तमान तिथि। |
2 | __TIME__ "एचएच:एमएम:एसएस" प्रारूप में अक्षर अक्षर के रूप में वर्तमान समय। |
3 | __FILE__ इसमें स्ट्रिंग अक्षर के रूप में वर्तमान फ़ाइल नाम शामिल है। |
4 | __LINE__ इसमें दशमलव स्थिरांक के रूप में वर्तमान पंक्ति संख्या शामिल है। |
5 | __STDC__ 1 के रूप में परिभाषित जब संकलक एएनएसआई मानक का अनुपालन करता है। |
उदाहरण
#include <stdio.h> int main() { printf("File :%s\n", __FILE__ ); printf("Date :%s\n", __DATE__ ); printf("Time :%s\n", __TIME__ ); printf("Line :%d\n", __LINE__ ); printf("ANSI :%d\n", __STDC__ ); }
आउटपुट
File :test.c Date :Jun 2 2012 Time :03:36:24 Line :8 ANSI :1