Preprocessor in C
Pre-processor in C
Preprocessor is a program which will executed automatically before passing the source program to compiler. This process is called pre-processing. The preprocessor provides the ability for the inclusion of header files, macro expansions, conditional compilation, and line control.
The C Preprocessor is not a part of compiler, it is a separate program invoked by the compiler as the first part of translation.
Commands used in preprocessor are called preprocessor directives and they begin with pond "#" symbol and should be not ended with (;).
Defined Proprocessor Directive
Proprocessor Directive can be place any where in the program, but generally it place top of the program before defining the first function.
Example
#include<stdio.h> #define PI 3.14 void main() { printf("%f",PI); }
Output
3.14
C language preprocessor directives
- Macro substitution directives. example: #define
- File inclusion directives. example: #include
- Conditional compilation directive. example: #if, #else, #ifdef, #undef
- Miscellaneous directive. example: #error, #line
Preprocessor | Syntax | Description |
---|---|---|
Macro | #define | This macro defines constant value and can be any of the basic data types. |
Header file inclusion | #include <file_name> | The source code of the file "file_name" is included in the main program at the specified place |
Conditional compilation | #ifdef, #endif, #if, #else, #ifndef | Set of commands are included or excluded in source program before compilation with respect to the condition |
Other directives | #undef, #pragma | #undef is used to undefine a defined macro variable. #Pragma is used to call a function before and after main function in a C program |
#ifdef, #else and #endif
"#ifdef" directive checks whether particular macro is defined or not. If it is defined, "If" clause statements are included in source file. Otherwise, "else" clause statements are included in source file for compilation and execution.
Example
#include<stdio.h> #include<conio.h> #define AGE 18 void main() { clrscr(); #ifdef AGE { printf("Eligible for voting\n"); } #else { printf("Not eligible\n"); } #endif getch(); }
Output
Eligible for voting
#if, #else and #endif
"If" clause statement is included in source file if given condition is true. Otherwise, else clause statement is included in source file for compilation and execution.
Example
#include<stdio.h> #include<conio.h> #define AGE 18 void main() { clrscr(); #if (AGE>=18) { printf("Eligible for voting"); } #else { printf("\nNot eligible"); } #endif getch(); }
Output
Eliginle for voting
undef
This directive undefines existing macro in the program. In below program we first undefine age variable and again it define with new value.
Example
#include<stdio.h> #include<conio.h> #define age 18 void main() { clrscr(); printf("First defined value for age: %d\n",age); #undef age // undefining variable #define age 30 // redefining age value for for new value printf("Age after undef redefine: %d",age); getch(); }
Output
First defined value for age: 18 Age after undef redefine: 30
pragma
Pragma is used to call a function before and after main function in a C program.
Example
#include<stdio.h> #include<conio.h> #include<dos.h> void function1( ); void function2( ); #pragma startup function1 #pragma exit function2 void main( ) { delay(1000); printf ("\nI am main function" ) ; } void function1( ) { clrscr(); delay(500); printf("\nI am function1"); } void function2( ) { delay(1000); printf ( "\nI am function2" ); getch(); }
Output
I am function1 I am main function I am function2
Explanation: Here delay() function are used for give delay or wait time for execution of code, this function is present in dos.h header file. With the help of delay function you can see clearly flow of above program.