Preprocessor
Preprocessor in C
Preprocessor is a program which can executed mechanically earlier than passing the source program to compiler. This course of is known as pre-processing. The preprocessor gives the flexibility for the inclusion of header recordsdata, macro expansions, conditional compilation, and line management.
The C Preprocessor shouldn’t be part of compiler, it’s a separate program invoked by the compiler as the primary a part of translation.
Instructions utilized in preprocessor are referred to as preprocessor directives they usually start with pond “#” image and needs to be not ended with (;).
Outlined Proprocessor Directive
Proprocessor Directive could be place any the place in this system, however typically it place high of this system earlier than defining the primary perform.
Instance
1 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#outline</span><span class="pln"> PI </span><span class="lit">3.14</span><span class="kwd">void</span><span class="pln"> primary</span><span class="pun">()</span><span class="pun">{</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"%f"</span><span class="pun">,</span><span class="pln">PI</span><span class="pun">);</span><span class="pun">}</span> |
Output
1 |
3.14 |
C language preprocessor directives
- Macro substitution directives. instance: #outline
- File inclusion directives. instance: #embrace
- Conditional compilation directive. instance: #if, #else, #ifdef, #undef
- Miscellaneous directive. instance: #error, #line
Preprocessor | Syntax | Description |
---|---|---|
Macro | #outline | This macro defines fixed worth and could be any of the essential information sorts. |
Header file inclusion | #embrace |
The source code of the file “file_name” is included in the principle program on the specified place |
Conditional compilation | #ifdef, #endif, #if, #else, #ifndef | Set of instructions are included or excluded in source program earlier than compilation with respect to the situation |
Different directives | #undef, #pragma | #undef is used to undefine an outlined macro variable. #Pragma is used to name a perform earlier than and after primary perform in a C program |
#ifdef, #else and #endif
“#ifdef” directive checks whether or not specific macro is outlined or not. Whether it is outlined, “If” clause statements are included in source file. In any other case, “else” clause statements are included in source file for compilation and execution.
Instance
1 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#embrace</span><span class="str"><conio.h></conio.h></span><span class="com">#outline</span><span class="pln"> AGE </span><span class="lit">18</span><span class="kwd">void</span><span class="pln"> primary</span><span class="pun">()</span><span class="pun">{</span><span class="pln">clrscr</span><span class="pun">();</span><span class="com">#ifdef</span><span class="pln"> AGE</span><span class="pun">{</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Eligible for votingn"</span><span class="pun">);</span><span class="pun">}</span><span class="com">#else</span><span class="pun">{</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Not eligiblen"</span><span class="pun">);</span><span class="pun">}</span><span class="com">#endif</span><span class="pln">getch</span><span class="pun">();</span><span class="pun">}</span> |
Output
1 |
Eligible for voting |
#if, #else and #endif
“If” clause assertion is included in source file if given situation is true. In any other case, else clause assertion is included in source file for compilation and execution.
Instance
1 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#embrace</span><span class="str"><conio.h></conio.h></span><span class="com">#outline</span><span class="pln"> AGE </span><span class="lit">18</span><span class="kwd">void</span><span class="pln"> primary</span><span class="pun">()</span><span class="pun">{</span><span class="pln">clrscr</span><span class="pun">();</span><span class="com">#if (AGE>=18)</span><span class="pun">{</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Eligible for voting"</span><span class="pun">);</span><span class="pun">}</span><span class="com">#else</span><span class="pun">{</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"nNot eligible"</span><span class="pun">);</span><span class="pun">}</span><span class="com">#endif</span><span class="pln">getch</span><span class="pun">();</span><span class="pun">}</span> |
Output
1 |
Eliginle for voting |
undef
This directive undefines present macro in this system. In under program we first undefine age variable and once more it outline with new worth.
Instance
1 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#embrace</span><span class="str"><conio.h></conio.h></span><span class="com">#outline</span><span class="pln"> age </span><span class="lit">18</span><span class="kwd">void</span><span class="pln"> primary</span><span class="pun">()</span><span class="pun">{</span><span class="pln">clrscr</span><span class="pun">();</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"First outlined worth for age: %dn"</span><span class="pun">,</span><span class="pln">age</span><span class="pun">);</span><span class="com">#undef</span><span class="pln"> age </span><span class="com">// undefining variable</span><span class="com">#outline</span><span class="pln"> age </span><span class="lit">30</span> <span class="com">// redefining age worth for for brand new worth</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Age after undef redefine: %d"</span><span class="pun">,</span><span class="pln">age</span><span class="pun">);</span><span class="pln">getch</span><span class="pun">();</span><span class="pun">}</span> |
Output
1 |
First outlined worth for age: 18Age after undef redefine: 30 |
pragma
Pragma is used to name a perform earlier than and after primary perform in a C program.
Instance
1 |
<span class="com">#embrace</span><span class="str"><stdio.h></stdio.h></span><span class="com">#embrace</span><span class="str"><conio.h></conio.h></span><span class="com">#embrace</span><span class="str"><dos.h></dos.h></span><span class="kwd">void</span><span class="pln"> function1</span><span class="pun">(</span> <span class="pun">);</span><span class="kwd">void</span><span class="pln"> function2</span><span class="pun">(</span> <span class="pun">);</span><span class="com">#pragma</span><span class="pln"> startup function1</span><span class="com">#pragma</span> <span class="kwd">exit</span><span class="pln"> function2</span><span class="kwd">void</span><span class="pln"> primary</span><span class="pun">(</span> <span class="pun">)</span><span class="pun">{</span><span class="pln">delay</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">);</span><span class="pln">printf </span><span class="pun">(</span><span class="str">"nI am primary perform"</span> <span class="pun">)</span> <span class="pun">;</span><span class="pun">}</span><span class="kwd">void</span><span class="pln"> function1</span><span class="pun">(</span> <span class="pun">)</span><span class="pun">{</span><span class="pln">clrscr</span><span class="pun">();</span><span class="pln">delay</span><span class="pun">(</span><span class="lit">500</span><span class="pun">);</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"nI am function1"</span><span class="pun">);</span><span class="pun">}</span><span class="kwd">void</span><span class="pln"> function2</span><span class="pun">(</span> <span class="pun">)</span><span class="pun">{</span><span class="pln">delay</span><span class="pun">(</span><span class="lit">1000</span><span class="pun">);</span><span class="pln">printf </span><span class="pun">(</span> <span class="str">"nI am function2"</span> <span class="pun">);</span><span class="pln">getch</span><span class="pun">();</span><span class="pun">}</span> |
Output
1 |
I'm function1I am primary functionI am function2 |
Clarification: Right here delay() perform are used for give delay or wait time for execution of code, this perform is current in dos.h header file. With the assistance of delay perform you possibly can see clearly movement of above program.