Macro Substitution Directive: ये एक ऐसा तरीका होता है जिसमें किसी Program का कोई Identifier किसी Predefined String से Replace होता है। Processor ये काम किसी #define Statement के Under में करता है। इस तरह के Statements को Macro Definition कहा जाता है। जैसे:
#define START main(){
जब हम हमारे Program में इस प्रकार से किसी Macro को Define करते हैं तो Program में जहां भी Macro का नाम होता है Program Compile होने से पहले वहां पर Define की गई String Replace हो जाती है। इसे समझने के लिए निम्न Program देखिए-
// Program #include <stdio.h> #include <conio.h> #define START main() { #define PI 3.14 START float Area, radius; printf("Enter Radius"); scanf("%f", &radius); Area = PI * radius * radius; printf("Area of Radius is %f ", Area); getch(); }
जब इस Program को Compile किया जाता है तब Program Compile होने से पहले सारे Macro Statements Expand होते हैं। यानी ये Program Compile होने से पहले निम्नानुसार Format में Convert होता है
// Program //Expanded File : #include <stdio.h> #include <conio.h> #define START main(){ #define PI 3.14 main() { float Area, radius; printf("Enter Radius"); scanf("%f", &radius); Area = 3.14 * radius * radius; printf("Area of Radius is %f ", Area); getch(); }
Source Code के Expand होने पर START के स्थान पर main(){ व PI के स्थान पर 3.14 मान आ जाता है। मान आने के बाद Program Compile होता है। Macro Definition के बाद जो मान लिखा जाता है वह वास्तव में एक String होता है। यानी इस Program में PI का जो मान 3.14 लिखा गया है वह float Value नहीं है बल्कि एक String है। Macro Substitution के कई तरीके होते हैं:
Simple Macro Substitution
सामान्यतया इस तरह के Macro किसी Constant को Define करने के लिए लिखे जाते हैं। जैसे:
#define COUNT 200 #define TRUE 1 #define LAMBDA 2.1 #define NAME "Raghva" #define SIZE sizeof(float)*6 #define AREA (3.1415926 * 12)
सामान्यतया सभी Macros को Capital Letters में लिखा जाता है ताकि हम जब भी किसी Macro को अपने Program में Use करें तो हमें पता रहे कि हम किसी Macro को Use कर रहे हैं। सामान्यतया सभी Mathematical Expressions को कोष्ठक में लिखना चाहिए।
कई बार हम Macro Define करते समय जो String लिखते हैं, वह String काफी लम्बी हो जाती है। इस स्थिति में यदि हम चाहें कि String को अगली स्पदम में लिख दें] तो हम ये काम Back Slash का प्रयोग करके कर सकते हैं। जैसे
#define LONG_STRING “This string is very long to fit in one \
line; so write it in next line.”
Buy this eBook for Complete Discussion about
Macros with Arguments
Nesting of Macros
Un-defining a Macro
__LINE__ and __FILE__ Predefined Identifiers of Compiler
Built – In Predefined Macros
# and ## Preprocessors
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
C Programming Language in Hindi | Page: 477 + 265 | Format: PDF