Preprocessor Directives in C Language

Preprocessor Directives in C Language: कई बार हमें ऐसी जरूरत होती है जिसमें हम चाहते हैं कि हमारा Source Program Compiler पर Compile होने के लिए Processor पर जाने से पहले कुछ काम करे। इस प्रकार के कामों को परिभाषित करने के लिए हम Preprocessor Directives का प्रयोग करते हैं। Preprocessor Directives की शुरूआत हमेंशा # से होती है और इन्हें हमेंशा Header Files को Include करने वाले Statement के Just नीचे लिखा जाता है। Preprocessor Directives को समझने के लिए हम एक Program देखते हैं, जिसमें हम Output में “Hello World” Print करना चाहते हैं। ये Program निम्नानुसार है:

//Program:
#include <stdio.h>
#include <conio.h>
 
#define START  main() {
#define PRINT  printf(“Hello World”);
#define PAUSE  getch();
#define END    }
 
START  /* Start the program. */
PRINT  /* Display message on the screen.*/
PAUSE  /* Pause the screen to display output. */
END    /* Terminate the program. */

Output:
       Hello World

इस Program को Compile करने पर भी हमें वही Output प्राप्त होता है, जो Output हमें पिछले अध्‍याय में प्राप्त हुआ था। ऐसा इसलिए होता है, क्योंकि जब भी हम इस Program को Compile करते हैं, इस Program में Define किए गए सभी Preprocessor Directives Program के Processor पर Compile होने के लिए जाने से पहले Expand होकर मूल Codes में Convert हो जाते हैं। जब सभी Directives Expand हो जाते हैं, तब ये Program निम्नानुसार Normal Form में आ जाता है:

//Program:
#include <stdio.h>
#include <conio.h>

main() {                 /* START */
printf(“Hello World”);   /* PRINT */
getch();                 /* PAUSE */
}                        /* END   */

Compiler अब इस Normal Form में Converted Program को Processor पर Compile होने के लिए भेजता है। चूंकि #define के साथ Use किए जाने वाले Directives Program के Processor पर Compile होने के लिए जाने से पहले Expand होते हैं, इसलिए इन Directives को Preprocessor Directives कहा जाता है। विभिन्न प्रकार के Preprocessor Directives के बारे में हम आगे विस्तार से जानेंगे।

Preprocessor Directives का प्रयोग Header Files को Develop करते समय ही सबसे ज्‍यादा किया जाता है। “C” Language की Library में विभिन्न प्रकार के तकनीकी मानों को सरल रूप में Represent करने के लिए उन्हें Preprocessor Directives का प्रयोग करके एक सरल नाम दे दिया जाता है, ताकि इन मानों को सरलता से याद रखा जा सके व Use किया जा सके। Preprocessor Directives का प्रयोग करके विभिन्न प्रकार के बडे-बडे तकनीकी नामों व मानों को सरल व छोटे Identifier के रूप में परिभाषित किया जा सकता है। एक बार किसी मान का कोई नाम दे देने के बाद हम उस मान को उसके नाम से Refer कर सकते हैं।

उदाहरण के लिए मानलो कि हमें किसी Program में बार-बार PI के मान 3.142857142857142 की जरूरत पडती है। अब इतने बडे मान को बार-बार विभिन्न Statements में बिना गलती के लिखना नामुमकिन है। किसी ना किसी Statement में इसको Type करने में Mistake हो ही जाएगी। इस स्थिति में हम एक Preprocessor Directive का प्रयोग करके इस मान को एक नाम प्रदान कर सकते हैं। इस मान को एक नाम प्रदान कर देने के बाद हमें जिस किसी भी स्थान पर Calculation के लिए इस मान की जरूरत हो, हम उस नाम को Use कर लेते हैं।

जब Program को Compile करते हैं, तब Program Compile होने से पहले उन सभी स्थानों पर, जहां पर Preprocessor का प्रयोग किया गया है, Preprocessor को उसके मान से Replace कर देता है। इस तरह से Program में Typing की वजह से होने वाली गलतियों से बचा जा सकता है। इस प्रक्रिया को निम्न Program में Implement किया गया है।

//Program:
#include <stdio.h>
#include <conio.h>
#define PI   3.142857142857142   main() {
   printf("Value of PI is = %.15e", PI);
   getch();
}

जब इस Program को Run किया जाता है, तब Output में %2.15e Control String के स्थान पर मान 3.142857142857142 को Represent करने वाले Identifier PI के स्थान पर ये मान Expand हो जाता है और Screen पर घातांक रूप में Display हो जाता है।

चूंकि Float प्रकार का Control String दसमलव के बाद केवल 6 अंकों तक की संख्‍या को ही Display कर सकता है, इसलिए हमने इस Program के printf() Function में %.15e Control String का प्रयोग किया है। ये Control String Compiler को ये Instruction देता है कि Screen पर Display किए जाने वाले मान में दसमलव के बाद कुल 15 Digits Display होने चाहिएं। ये Program जब Compile किया जाता है, तब Compile होने से पहले निम्नानुसार Form में Convert हो जाता है:

//Program:
#include <stdio.h>
#include <conio.h>
main() {
  printf("Value of PI is = %.15e", 3.142857142857142);     
  getch();
}

जब हम अपनी जरूरत के आधार पर विभिन्न प्रकार के Identifier Declare करते हैं, तब किस प्रकार का Identifier Memory में Minimum व Maximum कितने मान तक की संख्‍या को Hold कर सकता है, इस बात की जानकारी “C” Language के साथ मिलने वाली “limits.h” नाम की Header File में दी गई है।

What are Operators?
C Data Type Range

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS