प्रीप्रोसेसर्स वे निर्देश हैं, जो कंपाइलर को वास्तविक संकलन शुरू होने से पहले जानकारी को प्रीप्रोसेस करने के निर्देश देते हैं।
सभी प्रीप्रोसेसर निर्देश # से शुरू होते हैं, और एक लाइन पर प्रीप्रोसेसर निर्देश से पहले केवल व्हाइट-स्पेस वर्ण दिखाई दे सकते हैं। प्रीप्रोसेसर निर्देश 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