Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी/सी++ में प्रीप्रोसेसर कैसे काम करता है?

यहां हम देखेंगे कि प्रीप्रोसेसर सी या सी ++ में कैसे काम कर रहे हैं। आइए देखें कि प्रीप्रोसेसर क्या हैं।

प्रीप्रोसेसर निर्देश हैं, जो वास्तविक संकलन शुरू होने से पहले जानकारी को प्रीप्रोसेस करने के लिए कंपाइलर को निर्देश देते हैं।

सभी प्रीप्रोसेसर निर्देश # से शुरू होते हैं, और एक लाइन पर प्रीप्रोसेसर निर्देश से पहले केवल व्हाइट-स्पेस वर्ण दिखाई दे सकते हैं। प्रीप्रोसेसर निर्देश सी ++ कथन नहीं हैं, इसलिए वे अर्धविराम (;) में समाप्त नहीं होते हैं।

आपने पहले ही एक #शामिल . देखा है सभी उदाहरणों में निर्देश। इस मैक्रो का उपयोग हेडर फ़ाइल को स्रोत फ़ाइल में शामिल करने के लिए किया जाता है।

सी ++ द्वारा समर्थित कई प्रीप्रोसेसर निर्देश हैं जैसे #include, #define, #if, #else, #line, आदि। आइए देखें महत्वपूर्ण निर्देश -

#डिफाइन प्रीप्रोसेसर

#define प्रीप्रोसेसर निर्देश प्रतीकात्मक स्थिरांक बनाता है। प्रतीकात्मक स्थिरांक को मैक्रो कहा जाता है और निर्देश का सामान्य रूप है -

#define macro-name replacement-text

उदाहरण

#include <iostream>
using namespace std;
#define PI 3.14159
int main () {
   cout << "Value of PI :" << PI << endl;
   return 0;
}

आउटपुट

Value of PI :3.14159

सशर्त संकलन

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

सशर्त प्रीप्रोसेसर निर्माण 'अगर' चयन संरचना की तरह है। निम्नलिखित प्रीप्रोसेसर कोड पर विचार करें -

#ifndef NULL
#define NULL 0
#endif

आप डिबगिंग उद्देश्य के लिए एक प्रोग्राम संकलित कर सकते हैं। आप निम्न प्रकार से एकल मैक्रो का उपयोग करके डिबगिंग को चालू या बंद भी कर सकते हैं -

#ifdef DEBUG
cerr <<"Variable x = " << x << endl;
#endif

यह सीर स्टेटमेंट को प्रोग्राम में संकलित करने का कारण बनता है यदि प्रतीकात्मक स्थिर DEBUG को निर्देश #ifdef DEBUG से पहले परिभाषित किया गया है। कार्यक्रम के एक हिस्से पर टिप्पणी करने के लिए आप #if 0 स्टेटमेंट का उपयोग इस प्रकार कर सकते हैं -

#if 0
code prevented from compiling
#endif

उदाहरण

#include <iostream>
using namespace std;
#define DEBUG
#define MIN(a,b) (((a)<(b)) ? a : b)
int main () {
   int i, j;
   i = 100;
   j = 30;
   #ifdef DEBUG
   cerr <<"Trace: Inside main function" << endl;
   #endif
   #if 0
      /* This is commented part */
      cout << MKSTR(HELLO C++) << endl;
   #endif
   cout <<"The minimum is " << MIN(i, j) << endl;
   #ifdef DEBUG
      cerr <<"Trace: Coming out of main function" << endl;
   #endif
   return 0;
}

आउटपुट

Trace: Inside main function
The minimum is 30
Trace: Coming out of main function

  1. मॉलोक () और फ्री () सी/सी ++ में कैसे काम करते हैं?

    मॉलोक () फ़ंक्शन malloc () का उपयोग बाइट्स के अनुरोधित आकार को आवंटित करने के लिए किया जाता है और यह आवंटित मेमोरी के पहले बाइट के लिए एक पॉइंटर देता है। विफल होने पर यह शून्य सूचक लौटाता है। यहाँ C भाषा में malloc() का सिंटैक्स दिया गया है, pointer_name = (cast-type*) malloc(size); यहाँ, poin

  1. Linux पर C++ का सबसे अच्छा IDE क्या है?

    केवल टेक्स्ट एडिटर्स पर बड़े प्रोजेक्ट्स को मैनेज करना मुश्किल है। यदि आप ऐसे मामलों में आईडीई का उपयोग करते हैं तो आप अधिक उत्पादक और कम निराश होने की संभावना रखते हैं। विभिन्न प्रकार के आईडीई हैं और आपको अपनी आवश्यकताओं के अनुरूप सही का चयन करना चाहिए। Linux पर C++ के लिए एक भी सर्वश्रेष्ठ IDE नही

  1. C++ में #define प्रीप्रोसेसर क्या है?

    #define एक मैक्रो बनाता है, जो एक टोकन स्ट्रिंग के साथ एक पहचानकर्ता या पैरामीटरयुक्त पहचानकर्ता का जुड़ाव है। मैक्रो परिभाषित होने के बाद, कंपाइलर स्रोत फ़ाइल में पहचानकर्ता की प्रत्येक घटना के लिए टोकन स्ट्रिंग को प्रतिस्थापित कर सकता है। #define identifier token-string इस प्रकार प्रीप्रोसेसर का उ