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

C++ प्रीप्रोसेसर्स (Preprocessors)

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

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

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

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

#define प्रीप्रोसेसर

#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

सशर्त संकलन (Conditional Compilations)

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

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

#ifndef NULL
    #define NULL 0
#endif

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

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

यह प्रोग्राम में cerr स्टेटमेंट को संकलित करता है यदि प्रीप्रोसेसर निर्देश #ifdef DEBUG से पहले प्रतीकात्मक स्थिरांक 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. - C++ में एनकैप्सुलेशन (Encapsulation)

    एनकैप्सुलेशन क्या है? डेटा और उस डेटा को मैनिपुलेट करने वाले मेथड्स को एक ही घटक (क्लास) में बांधना और बाहरी हस्तक्षेप से बचाना। डेटा छिपाने (data hiding) की ओर ले जाता है। C++ में कार्यान्वयन क्लासेस (उपयोगकर्ता-परिभाषित डेटा प्रकार) का उपयोग करके। क्लास डेटा सदस्यों और मेथड्स को एक साथ बांधती है

  1. - C++ में #define और const कीवर्ड में क्या अंतर है?

    #define डायरेक्टिव एक प्रीप्रोसेसर डायरेक्टिव है; प्रीप्रोसेसर कंपाइलर द्वारा इसे देखने से पहले उन मैक्रोज़ को उनके बॉडी से बदल देता है। इसे अपने सोर्स कोड के स्वचालित सर्च और रिप्लेस के रूप में सोचें। एक const वेरिएबल डिक्लेरेशन भाषा में एक वास्तविक वेरिएबल घोषित करता है, जिसे आप एक वास्तविक वेरिए

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

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