Professional Documents
Culture Documents
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org1
Preprocessor Directives
The C Preprocessor is not a part of the compiler, but is a separate step
in the compilation process. In simple terms, a C Preprocessor is just a
text substitution tool and it instructs the compiler to do required pre-
processing before the actual compilation.
All preprocessor commands begin with a hash symbol (#). It must be
the first nonblank character, and for readability, a preprocessor directive
should begin in the first column. The following section lists down all the
important preprocessor directives −
Sr.No. Directive & Description
1 #define
Substitutes a preprocessor macro.
2 #include
Inserts a particular header from another file.
3 #undef
Undefines a preprocessor macro.
4 #ifdef
Returns true if this macro is defined.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Preprocessor Directives
Sr.No. Directive & Description
5 #ifndef
Returns true if this macro is not defined.
6 #if
Tests if a compile time condition is true.
7 #else
The alternative for #if.
8 #elif
#else and #if in one statement.
9 #endif
Ends preprocessor conditional.
10 #error
Prints error message on stderr.
11 #pragma
Issues special commands to the compiler, using a standardized method.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Preprocessor Directive Examples
#include <stdio.h>
/* #define macro_name
character_sequence */
#define LIMIT 10
int main()
{
int counter;
for(counter =1; counter <=LIMIT;
counter++)
{
printf("%d\n", counter);
}
return 0;
}
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Preprocessor Directive Examples
#include <stdio.h>
#include "header.h“
#include <stdio.h> tell the compiler to add stdio.h file from System Libraries to the
current source file, and #include "header.h" tells the compiler to get header.h from
the local directory.
#undef LIMIT
#define LIMIT 20
This tells the compiler to undefine existing LIMIT and set it as 20.
#ifndef LIMIT
#define LIMIT 50 #endif
This tells the compiler to define LIMIT, only if LIMIT isn't already defined.
#ifdef LIMIT
/* Your statements here */#endif
This tells the compiler to process the statements enclosed if LIMIT is defined.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor
ANSI C defines a number of macros. Although each one is available for use in programming,
the predefined macros should not be directly modified.
2 __TIME__
The current time as a character literal in "HH:MM:SS" format.
3 __FILE__
This contains the current filename as a string literal.
4 __LINE__
This contains the current line number as a decimal constant.
5 __STDC__
Defined as 1 when the compiler complies with the ANSI standard.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor
Output
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
Following are some interesting facts about preprocessors in C.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
3) The macros can take function like arguments, the arguments are not
checked for data type. For example, the following macro INCREMENT(x) can
be used for x of any data type.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
4) The macro arguments are not evaluated before macro expansion. For
example, consider the following program.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
5) The tokens passed to macros can be concatenated using operator ## called
Token-Pasting operator.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
7) The macros can be written in multiple lines using ‘\’. The last line doesn’t
need to have ‘\’
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
8) The macros with arguments should be avoided as they cause problems
sometimes. And Inline functions should be preferred as there is type checking
parameter evaluation in inline functions.
For example consider the following program. From first look the output seems
to be 1, but it produces 36 as output.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
Pre-defined Preprocessor: Facts
8) The macros with arguments should be avoided as they cause problems
sometimes. And Inline functions should be preferred as there is type checking
parameter evaluation in inline functions.
For example consider the following program. From first look the output seems
to be 1, but it produces 36 as output.
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org
THANK YOU
W3schools.in
UNIT-II Introduction to C programming Tutorialspoint.com
Geeksforgeeks.org