Preprcessor क्या होता है ?
Program के हर header area में #include <stdio.h> इस प्रकार के files को include करते है | इनकी शुरुआत '#' से होती है | इन्हें 'Preprocessor' कहते है | Preprocessor को statement की तरह semicolon (;) नहीं दिया जाता |Preprocessor ये एक Program है, जो Source Code compile होने से पहले ही execute होता है |
Normal Example for Preprocessor
#include <stdio.h>
int main(){
printf("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 <stdio.h>
#define PI 3.145
int main(){
printf("Value of PI : %f\n", PI);
return 0;
}
Output :
Value of PI : 3.145000 Overwrite value of PI : 3.140000
Example for #define function macro
Source Code :
#include <stdio.h>
#define PI 3.145
#define Area(rad) PI*rad*rad
int main()
{
int radius = 5;
float area;
area = Area(radius);
printf("Area of circle is %f", 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 <stdio.h>
int main(){
printf("Date : %s\n", __DATE__ );
printf("File : %s\n", __FILE__ );
printf("Line : %d\n", __LINE__ );
printf("STDC : %d\n", __STDC__ );
printf("Time : %s\n", __TIME__ );
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 : stdio.h, conio.h, math.h
- User-defined header file : myheader.h
- header files में functions होते है, जिस program में इन functions का इस्तेमाल करना हो तो header files को include करना पड़ता है |
- stdio.h header files : printf(), scanf()
- myheader.h header file : myfunction()
Example for #include
Source Code :
#include <stdio.h>
#include <conio.h>
void main(){
printf("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 <stdio.h>
#define num 1
int main() {
#if (num==1)
{
printf("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 <stdio.h>
#define num 1
int main() {
#if (num==0)
{
printf("Number is equal to 1");
}
#else
{
printf("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 <stdio.h>
#define num 15
int main(){
#if (num<10)
{
printf("Number is less than 10");
}
#elif (num>10)
{
printf("Number is greater than 10");
}
#else#if (num==10)
{
printf("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 <stdio.h>
#define POSITIVE 5
int main() {
#ifdef POSITIVE
printf("Defined Positive value");
#else
printf("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 <stdio.h>
#define POSITIVE 5
int main() {
#ifndef NEGATIVE
printf("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 <stdio.h>
#define num 1
int main() {
#if (num==1)
{
printf("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 <stdio.h>
#define num 1
#undef num
int main(){
printf("num is %d\n", num);
return 0;
}
Output :
error: 'num' undeclared
2nd Example for #undef
Source Code :
#include <stdio.h>
#define num 1
int main(){
printf("num is %d\n", num);
#undef num
#define num 2
printf("num is %d", num);
return 0;
}
Output :
num is 1 num is 2







No comments: