Macros क्या है? – Macros in C In Hindi

हेलो फ्रेंड्स, आज के इस आर्टिकल में हम C Macros के बारे में बात करने वाले है | 

आज हम विस्तार से जानेंगे कि Macros क्या है? (What is Macros in C in Hindi) और सी लैंग्वेज में मैक्रोस का उपयोग क्यों किया जाता है?

तो आइये बिना समय गवाए जानते है कि Macros Kya Hai?

Macros क्या है? - Macros in C In Hindi

Macros क्या है? (What is Macros in C In Hindi)

Macros एक तरह के identifiers होते है जो साधरणतः कैपिटल लेटर्स में लिखे जाते है ताकि इन्हे नार्मल वेरिएबल से अलग दिखाया जा सके | 

macro को डिफाइन करने के लिए #define preprocessor directive का उपयोग किया जाता है | इसका बेसिक सिंटेक्स कुछ ऐसा होता है -:

Syntax -:

#define  macro_name macro_expansion

For example -:

#deflne TRUE 1
#define FALSE 0
#define PI 3.14159265
#define MAX 100
#define RETIRE AGE 58
  • #define एक preprocessor directive है जो macros को डिफाइन करने के लिए उपयोग किया जाता है |
  • macro_expansion कोई भी टेक्स्ट हो सकता है। (जैसे – TRUE, FALSE, PI, MAX, MIN आदि)
  • macro_name और macro_expansion के बीच एक स्पेस होना आवश्यक है। 
  • सी लैंग्वेज में जब कोई मैक्रो ट्रिगर होता है तब प्रीप्रोसेसर, macro_name को macro_expansion से replace कर देता है।
  • macros डेफिनिशन को सेमी-कोलन (;) द्वारा समाप्त करने की आवश्यकता नहीं होती।

आइये macros को हम एक प्रोग्राम के द्वारा और अच्छे समझते है | 

Example Program

#include <stdio.h>

// macro definition
#define age 18  

int main()
{ 
  int userA;
  printf("Enter Your Age : ");
  scanf("%d",&userA);

   if(userA>age)
      {
	printf("You are eligible for voting\n");
      }
  else 
     {
	printf("Not eligible for voting  \n");
     }
	return 0;
}

इस प्रोग्राम में मैंने age नाम से एक macro डिफाइन किया है जिसकी वैल्यू 18 है | प्रोग्राम में जहा कही भी इस मैक्रो (age) का उपयोग होगा, वहाँ पर प्रीप्रोसेसर उस मैक्रो नाम को replace करके उसकी जगह उसकी वैल्यू (18) को रख देगा | 

इस प्रोग्राम में मैंने age मैक्रो का उपयोग if कंडीशन के साथ किया है और पता लगाया है कि यूजर वोटिंग के लिए एलिजिबल है या नहीं ? 

जैसे ही प्रोग्राम प्रीप्रोसेसर के पास जाता है, सी प्रीप्रोसेसर age मैक्रो को replace करके उसकी जगह उसकी वैल्यू 18 को रख देता है | 

मैक्रोस के प्रकार (Types of Macros In C)

सी लैंग्वेज में macros दो प्रकार के होते है -:

  • Object like macros 
  • Function like macros 
  • Chain like macros 

Object like macros 

Object-like macro सिंपल identifiers होते है जो कि value द्दारा replace होते है | 

यह व्यापक रूप से numeric constants वैल्यू को symbolic name में represent करने के लिए उपयोग किया जाता है | 

For Example -: 

#define PI 3.14  

यहाँ PI एक मैक्रो है जो 3.14 वैल्यू द्वारा replace होगा |

Example Program

// C program to illustrate macros
#include <stdio.h>

// Macro definition
#define PI 3.14

int main()
{
    int r, aoc;

   // Print the message
   printf("Enter the radius :");
   scanf("%d",&r);

    aoc = PI*(r*r);
    printf("Area of circle is %d",aoc);
	return 0;
}

Output -:

Enter the radius : 5
Area of circle is 78.54

Chain like macros 

जब किसी मैक्रो के अंदर मैक्रो को डिफाइन किया जाता है तब इसे chain macros कहते है | chain macros में सबसे पहले पैरेंट मैक्रो एक्सपैंड होता है फिर चाइल्ड मैक्रो एक्सपैंड होता है | 

Example -:

// C program to illustrate chain macros
#include <stdio.h>

// Macro definition
#define INSTAGRAM FOLLOWERS
#define FOLLOWERS 330

int main()
{
  // Print the message
  printf("CsTutorialpoint have %dK followers on Instagram", INSTAGRAM);

 return 0;
}

Output

CsTutorialpoint have 330k followers on Instagram

Function like macros 

Function-like Macros, फंक्शन कॉल की तरह दिखाई देते है | मैक्रो नाम के तुरंत बाद parentheses () आवश्यक है। यदि हम मैक्रो डेफिनेशन में macro name और parentheses के बीच एक space रखते हैं तो macro काम नहीं करेगा।

Example 

// C program to illustrate Function like macros 
#include <stdio.h>

// Function-like Macro definition
#define MIN(a, b) (((a) < (b)) ? (a) : (b))

int main()
{

// Given two number a and b
int a = 10;
int b = 70;

printf("Minimum value between"
	" %d and %d is %d\n", a, b, min(a, b));

return 0;
}

Output

Minimum value between 10 and 70 is 10

ANSI C में कई सारे मैक्रो डिफाइन किये गए है जिनका उपयोग सी लैंग्वेज में विभिन्न उद्देशय से किया जाता है |

आइये जानते है उन Pre-defined मैक्रो के बारे में  |

Predefined macros In C

No.MacroDescription
1_DATE_current date को “MMM DD YYYY” format में represents करने के लिए |
2_TIME_current time  को “HH:MM:SS” format में represents करने के लिए |
3_FILE_current file name को रिप्रेजेंट करता है |
4_LINE_current line number को रिप्रेजेंट करता है |
5_STDC_इसे 1 के रूप में define किया जाता है जब कम्पाइलर ANSI standard को compile करता है।

आइये इन predefined मैक्रो को हम उदाहरण के साथ समझते है | 

Example 

// C program to illustrate predefined macros
#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("STDC :%d\n", __STDC__ );      
   return 0;  
 }  

Output -:

File :program.c
Date :Sep 01 2021
Time :12:28:46
Line :6
STDC :1

Conclusion

दोस्तों आशा करता हु कि आज के इस आर्टिकल को पढ़ने के बाद आपको Macros क्या है? (What is Macros in C in Hindi) और सी लैंग्वेज में मैक्रोस का उपयोग क्यों किया जाता है? से संबंधित सभी जानकारी मिल गई होगी |

अगर आप सी लैंग्वेज का Complete Tutorial चाहते है तो मेरे इस पोस्ट C Language Tutorial In Hindi को देखे यहाँ आपको C Programming Language के सभी टॉपिक्स step by step मिल जाएगी |

दोस्तों आशा करता हु कि आपको ये पोस्ट पसंद आई होगी और अगर आपको ये पोस्ट पसंद आया है तो इस पोस्ट को अपने अपने दोस्तों को शेयर करना न भूलिएगा ताकि उनको भी Macros क्या है? (What is Macros in C in Hindi) और सी लैंग्वेज में मैक्रोस का उपयोग क्यों किया जाता है? से संबंधित जानकारी प्राप्त हो सके |

अगर आपको अभी भी Macros In C In Hindi से संबंधित कोई भी प्रश्न या Doubt है तो आप जरूर बताये मैं आपके सभी सवालों का जवाब दूँगा और ज्यादा जानकारी के लिए आप हमसे संपर्क कर सकते है

ऐसे ही नयी टेक्नोलॉजी ,Programming Language, Coding , C Language, C++, Python Course , Java Tutorial से रिलेटेड जानकारियाँ पाने के लिए हमारे इस वेबसाइट को सब्सक्राइब कर दीजिए | जिससे हमारी आने वाली नई पोस्ट की सूचनाएं जल्दी प्राप्त होगी |

Jeetu Sahu is A Web Developer | Computer Engineer | Passionate about Coding, Competitive Programming and Blogging

Leave a Comment