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

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

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

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

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

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

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

  1. माइक्रोसॉफ्ट एक्सेल में मैक्रो कैसे बनाएं और चलाएं

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

  1. पायथन में 3 और 7

    मान लीजिए कि हमारे पास एक धनात्मक संख्या n है, हमें यह पता लगाना है कि हम 3 के कुछ गैर-ऋणात्मक गुणकों और 7 के कुछ गैर-ऋणात्मक गुणकों को जोड़ कर n बना सकते हैं या नहीं। इसलिए, अगर इनपुट 13 जैसा है, तो आउटपुट ट्रू होगा, क्योंकि 13 को 1*7+2*3 =13 के रूप में लिखा जा सकता है। इसे हल करने के लिए, हम इन च