ASK A QUESTION

    Preprocessor in Hindi

in Hindi - Preprocessor



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 TypesPreprocessors
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

MacroDescription
_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 जाते है |
    1. #include <file_name>
    2. #include "file_name"
  • कुछ header files predefined होते है और कुछ header files user-defined भी होती है |
    1. Predefined header files : iostream.h, conio.h, string.h, math.h
    2. User-defined header file : myheader.h
  • header files में functions होते है, जिस program में इन functions का इस्तेमाल करना हो तो header files को include करना पड़ता है |
    1. string.h header files : strlen(), strcat()
    2. 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