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

C में मैक्रोज़ और प्रीप्रोसेसर्स


C प्रीप्रोसेसर कंपाइलर का हिस्सा नहीं है, बल्कि कंपाइलेशन प्रक्रिया में एक अलग चरण है। सरल शब्दों में, एक C प्रीप्रोसेसर सिर्फ एक टेक्स्ट सब्स्टीट्यूशन टूल है और यह कंपाइलर को वास्तविक कंपाइलेशन से पहले आवश्यक प्री-प्रोसेसिंग करने का निर्देश देता है। हम C प्रीप्रोसेसर को CPP के रूप में संदर्भित करेंगे।

सभी प्रीप्रोसेसर कमांड हैश सिंबल (#) से शुरू होती हैं। यह पहला नॉन-ब्लैंक कैरेक्टर होना चाहिए, और पठनीयता के लिए, एक प्रीप्रोसेसर डायरेक्टिव पहले कॉलम में शुरू होनी चाहिए। निम्नलिखित खंड सभी महत्वपूर्ण प्रीप्रोसेसर डायरेक्टिव को सूचीबद्ध करता है -

Sr.No डायरेक्टिव्स और विवरण
1 #define
एक प्रीप्रोसेसर मैक्रो को प्रतिस्थापित करता है।
2 #include
किसी अन्य फाइल से एक विशेष हेडर सम्मिलित करता है।
3 #undef
एक प्रीप्रोसेसर मैक्रो को अपरिभाषित करता है।
4 #ifdef
यदि यह मैक्रो परिभाषित है तो सच लौटाता है।
5 #ifndef
यदि यह मैक्रो परिभाषित नहीं है तो सच लौटाता है।
6 #if
परीक्षण करता है कि क्या कंपाइल-टाइम कंडीशन सच है।
7 #else
#if के लिए विकल्प।
8 #elif
एक स्टेटमेंट में #else और #if।
9 #endif
प्रीप्रोसेसर कंडीशनल समाप्त करता है।
10 #error
stderr पर एरर मैसेज प्रिंट करता है।
11 #pragma
एक मानकीकृत विधि का उपयोग करके कंपाइलर को विशेष कमांड जारी करता है।

प्रीप्रोसेसर्स के कुछ उदाहरण -

विभिन्न डायरेक्टिव को समझने के लिए निम्नलिखित उदाहरणों का विश्लेषण करें।

#define MAX_ARRAY_LENGTH 20

यह डायरेक्टिव CPP को MAX_ARRAY_LENGTH के इंस्टेंस को 20 से प्रतिस्थापित करने के लिए कहता है। पठनीयता बढ़ाने के लिए स्थिरांक के लिए #define का उपयोग करें।

#include <stdio.h> #include "myheader.h"

ये डायरेक्टिव CPP को सिस्टम लाइब्रेरी से stdio.h प्राप्त करने और वर्तमान सोर्स फाइल में टेक्स्ट जोड़ने के लिए कहते हैं। अगली लाइन CPP को स्थानीय डायरेक्टरी से 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 /* आपके डिबगिंग स्टेटमेंट यहां */ #endif

यह CPP को संलग्न स्टेटमेंट को प्रोसेस करने के लिए कहता है यदि DEBUG परिभाषित है। यह उपयोगी है यदि आप संकलन के समय gcc कंपाइलर को -DDEBUG फ्लैग पास करते हैं। यह DEBUG को परिभाषित करेगा, इसलिए आप संकलन के दौरान फ्लाई पर डिबगिंग को चालू और बंद कर सकते हैं।

प्रीडिफाइन्ड मैक्रोज़ -

ANSI C कई मैक्रोज़ परिभाषित करता है। हालांकि प्रत्येक प्रोग्रामिंग में उपयोग के लिए उपलब्ध है, प्रीडिफाइन्ड मैक्रोज़ को सीधे संशोधित नहीं किया जाना चाहिए।

Sr.No मैक्रो और विवरण
1 __DATE__
"MMM DD YYYY" प्रारूप में एक कैरेक्टर लिटरल के रूप में वर्तमान तिथि।
2 __TIME__
"HH:MM:SS" प्रारूप में एक कैरेक्टर लिटरल के रूप में वर्तमान समय।
3 __FILE__
इसमें वर्तमान फ़ाइलनाम एक स्ट्रिंग लिटरल के रूप में होता है।
4 __LINE__
इसमें वर्तमान लाइन नंबर एक दशमलव स्थिरांक के रूप में होता है।
5 __STDC__
जब कंपाइलर ANSI मानक का अनुपालन करता है तो 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

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

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

  1. Microsoft Excel में मैक्रोज़ कैसे बनाएं और चलाएं Microsoft Excel में मैक्रोज़ कैसे बनाएं और चलाएं

    Microsoft Excel में, मैक्रोज़ Visual Basic प्रोग्रामिंग भाषा में रिकॉर्ड किए जाते हैं और इसे कई तरीकों से चलाया जा सकता है। आप Developer टैब पर मैक्रोज़ कमांड पर क्लिक करके, संयोजन शॉर्टकट कुंजी का उपयोग करके, ग्राफिक ऑब्जेक्ट पर क्लिक करके, या क्विक एक्सेस टूलबार पर बटन पर क्लिक करके मैक्रो चला सकत

  1. - पायथन में 3 और 7 (रैखिक संयोजन)

    समस्या विवरण एक धनात्मक संख्या n दी गई है, जांचें कि क्या इसे 3 के गैर-ऋणात्मक गुणक और 7 के गैर-ऋणात्मक गुणक के योग के रूप में व्यक्त किया जा सकता है। उदाहरण इनपुट: 13 आउटपुट: True (क्योंकि 13 = 1×7 + 2×3) एल्गोरिदम i = 0 से n तक स्टेप 7 में: यदि (n - i) % 3 == 0: True False पायथन कार्