Preprcessor क्या होता है ?
Program के हर header area में #include <iostream.h> इस प्रकार के files को include करते है | इनकी शुरुआत '#' से होती है | इन्हें 'Preprocessor' कहते है | Preprocessor को statement की तरह semicolon (;) नहीं दिया जाता |Preprocessor ये एक Program है, जो Source Code compile होने से पहले ही execute होता है |
Normal Example for Preprocessor
#include <iostream.h>
int main(){
cout<<"Hello";
return 0;
}
यहाँ पर Preprocessors को अलग-अलग विभाग में विभाजित किया है |
| Directive Types | Preprocessors |
|---|---|
| Macro | #define |
| File Inclusion | #include |
| Conditional Compilation | #if, #else, #ifdef, #endif, #ifndef, #elif |
| Other Directives | #pragma, #undef |
Macro - #define
macros identifiers होते है, Program में जहा पर identifier होता है, तो वो replace होकर वहा पर दी हुए value आ जाती है |For Example #define
Source Code :
#include <iostream.h>
#define PI 3.145
using namespace std;
int main(){
cout<<"Value of PI : "<<PI;
return 0;
}
Output :
Value of PI : 3.145000 Overwrite value of PI : 3.140000
Example for #define function macro
Source Code :
#include <iostream.h>
#define PI 3.145
#define Area(rad) PI*rad*rad
using namespace std;
int main()
{
int radius = 5;
float area;
area = Area(radius);
cout<<"Area of circle is "<<area;
return 0;
}
Output :
Area of circle is 78.625000
Predefined Macros
| Macro | Description | |
|---|---|---|
| _DATE_ | : | ये current date के string को return करता है | |
| _FILE_ | : | ये current file name को उसके path के साथ return करेगा | |
| _LINE_ | : | ये macro जिस line पर है उस line का number return करेगा | |
| _STDC_ | : | अगर compiler ANSI Standard C++ का पालन करता है तो वो '1' return करेगा | |
| _TIME_ | : | ये current time के string को return करता है | |
Example for predefined macro
Source Code :
#include <iostream.h>
using namespace std;
int main(){
cout<<"Date : "<<__DATE__<<endl;
cout<<"File : "<<__FILE__<<endl;
cout<<"Line : "<<__LINE__<<endl;
cout<<"STDC : "<<__STDC__<<endl;
cout<<"Time : "<<__TIME__<<endl;
return 0;
}
Output :
Date : Dec 19 2016 File : C:\UD\Documents\predefined_macro.c Line : 7 STDC : 1 Time :16:38:22
File Inclusion - #include
- Header files को program में include करने के लिए #include का इस्तेमाल करते है |
- हर एक program में #include का सन्दर्भ होता है |
- Preprocessor दो प्रकार में include जाते है |
- #include <file_name>
- #include "file_name"
- कुछ header files predefined होते है और कुछ header files user-defined भी होती है |
- Predefined header files : iostream.h, conio.h, string.h, math.h
- User-defined header file : myheader.h
- header files में functions होते है, जिस program में इन functions का इस्तेमाल करना हो तो header files को include करना पड़ता है |
- string.h header files : strlen(), strcat()
- myheader.h header file : myfunction()
Example for #include
Source Code :
#include <iostream.h>
#include <conio.h>
using namespace std;
int main(){
cout<<"Hello World!";
getch();
}
Output :
Hello World!
Conditional Compilation - #if
#if ये एक conditional preprocessor है , जिसके आगे expression या condition को लिखा जाता है | अगर दी हुई condition true हो तो वो नीचेवाला statement / code execute करता है |Note :अगर Programmer CodeBlock के compiler में program बना रहा हो तो, उसे Program लिखते वक्त ही पता चलता है कि, कौनसा statement 'true' है और कौनसा 'false' |
Syntax for #if
#if condition statement(s); #endif
Example for #if
Source Code :
#include <iostream.h>
#define num 1
using namespace std;
int main(){
#if (num==1)
{
cout<<"Number is equal to 1";
}
#endif
return 0;
}
Output :
Number is equal to 1
Conditional Compilation - #else
अगर #if की condition 'false" होती है तो #else का statement 'true' होता है |Syntax for #else
#if condition statement(s); #else statement(s); #endif
Example for #else
Source Code :
#include <iostream.h>
#define num 1
using namespace std;
int main() {
#if (num==0)
{
cout<<"Number is equal to 1";
}
#else
{
cout<<"Number is equal to 1";
}
#endif
return 0;
}
Output :
Number is equal to 1
Conditional Compilation - #elif
#elif ये else if का combination होता है | अगर #if की condition false हो तो, वो #elif के condition पर जाता है , अगर condition true होती तो उसका statement print होता है |Syntax for #elif
#if condition statement(s); #elif condition statement(s); #else statement(s); #endif
Example for #elif
Source Code :
#include <iostream.h>
#define num 15
using namespace std;
int main(){
#if (num<10)
{
cout<<"Number is less than 10";
}
#elif (num>10)
{
cout<<"Number is greater than 10";
}
#else#if (num==10)
{
cout<<"Number is equal to 10";
}
#endif
return 0;
}
Output :
Number is greater than 10
Conditional Compilation - #ifdef
#ifdef(if defined) पहले program में #define ये preprocessor लिखा है या नहीं ये check करता है | अगर #ifdef का macro और #define का macro same होता है तो, #ifdef का statement 'true' होता है |Syntax for #ifdef
#ifdef macro statement(s); #endif
Example for #ifdef
Source Code :
#include <iostream.h>
#define POSITIVE 5
using namespace std;
int main() {
#ifdef POSITIVE
cout<<"Defined Positive value";
#else
cout<<"Defined Negative Value";
#endif
return 0;
}
Output :
Defined Positive value
Conditional Compilation - #ifndef
#ifndef (if not defined) ये पहले #define के macro को check करता है, अगर #define का macro और #ifndef का macro अलग-अलग है तो, वो true return करता है |Syntax for #ifndef
#ifndef macro statement(s); #endif
Example for #ifndef
Source Code :
#include <iostream.h>
#define POSITIVE 5
using namespace std;
int main() {
#ifndef NEGATIVE
cout<<"Defined Negative value";
#endif
return 0;
}
Output :
Defined Negative value
Conditional Compilation - #endif
जहा पर #if का इस्तेमाल होता है वहा पर #endif का इस्तेमाल होता |Syntax for #endif
statement(s) of #if or #else; #endif
Example for #endif
Source Code :
#include <iostream.h>
#define num 1
using namespace std;
int main() {
#if (num==1)
{
cout<<"Number is equal to 1";
}
#endif
return 0;
}
Output :
Number is equal to 1
Other Directives - #undef
Syntax for #undef
#undef ये preprocessor #define किये हुए macro को undefine कर देता है |#undef macro
1st Example for #undef
Source Code :
#include <iostream.h>
#define num 1
#undef num
using namespace std;
int main(){
cout<<"num is "<<num;
return 0;
}
Output :
error: 'num' undeclared
2nd Example for #undef
Source Code :
#include <iostream.h>
#define num 1
using namespace std;
int main(){
cout<<"num is "<<num;
#undef num
#define num 2
cout<<"num is "<<num;
return 0;
}
Output :
num is 1 num is 2







No comments: