Pages

C – Preprocessor directives



C PREPROCESSOR DIRECTIVES:

  • Before a C program is compiled in a compiler, source code is processed by a program called preprocessor. This process is called preprocessing.
  • Commands used in preprocessor are called preprocessor directives and they begin with “#” symbol.
Below is the list of preprocessor directives that C programming language offers.
PreprocessorSyntax/Description
MacroSyntax: #define
This macro defines constant value and can be any of the basic data types.
Header file inclusionSyntax: #include <file_name>
The source code of the file “file_name” is included in the main program at the specified place.
Conditional compilationSyntax: #ifdef, #endif, #if, #else, #ifndef
Set of commands are included or excluded in source program before compilation with respect to the condition.
Other directivesSyntax: #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.
A program in C language involves into different processes. Below diagram will help you to understand all the processes that a C program comes across.



There are 4 regions of memory which are created by a compiled C program. They are,
  1. First region – This is the memory region which holds the executable code of the program.
  2. 2nd region  – In this memory region, global variables are stored.
  3. 3rd region   – stack
  4. 4th region   – heap

DO YOU KNOW DIFFERENCE BETWEEN STACK & HEAP MEMORY IN C LANGUAGE?

Stack
Heap
Stack is a memory region where “local variables”, “return addresses of function calls” and “arguments to functions” are hold while C program is executed.
Heap is a memory region which is used by dynamic memory allocation functions at run time.
CPU’s current state is saved in stack memory
Linked list is an example which uses heap memory.

DO YOU KNOW DIFFERENCE BETWEEN COMPILERS VS INTERPRETERS IN C LANGUAGE?

Compilers
Interpreters
Compiler reads the entire source code of the program and converts it into binary code. This process is called compilation.
Binary code is also referred as machine code, executable, and object code.
Interpreter reads the program source code one line at a time and executing that line. This process is called interpretation.
Program speed is fast.
Program speed is slow.
One time execution.
Example: C, C++
Interpretation occurs at every line of the program.
Example: BASIC

KEY POINTS TO REMEMBER:

  1. Source program is converted into executable code through different processes like precompilation, compilation, assembling and linking.
  2. Local variables uses stack memory.
  3. Dynamic memory allocation functions use the heap memory.

EXAMPLE PROGRAM FOR #DEFINE, #INCLUDE PREPROCESSORS IN C LANGUAGE:

  • #define – This macro defines constant value and can be any of the basic data types.
  • #include <file_name> – The source code of the file “file_name” is included in the main C program where “#include <file_name>” is mentioned.

OUTPUT:

value of height : 100
value of number : 3.140000
value of letter : A
value of letter_sequence : ABC
value of backslash_char : ?

EXAMPLE PROGRAM FOR CONDITIONAL COMPILATION DIRECTIVES:

A) EXAMPLE PROGRAM FOR #IFDEF, #ELSE AND #ENDIF IN C:

  • “#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.

OUTPUT:

RAJU is defined. So, this line will be added in this C file

B) EXAMPLE PROGRAM FOR #IFNDEF AND #ENDIF IN C:

  • #ifndef exactly acts as reverse as #ifdef directive. If particular macro is not defined, “If” clause statements are included in source file.
  • Otherwise, else clause statements are included in source file for compilation and execution.

OUTPUT:

SELVA is not defined. So, now we are going to define here

C) EXAMPLE PROGRAM FOR #IF, #ELSE AND #ENDIF IN C:

  • “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.

OUTPUT:

This line will be added in this C file since a = 100

EXAMPLE PROGRAM FOR UNDEF IN C LANGUAGE:

This directive undefines existing macro in the program.

OUTPUT:

First defined value for height : 100
value of height after undef & redefine : 600

EXAMPLE PROGRAM FOR PRAGMA IN C LANGUAGE:

Pragma is used to call a function before and after main function in a C program.

OUTPUT:

Function1 is called before main function call
Now we are in main function
Function2 is called just before end of main function

MORE ON PRAGMA DIRECTIVE IN C LANGUAGE:

Pragma command
Description
#Pragma startup <function_name_1>
This directive executes function named “function_name_1” before
#Pragma exit <function_name_2>
This directive executes function named “function_name_2” just before termination of the program.
#pragma warn – rvl
If function doesn’t return a value, then warnings are suppressed by this directive while compiling.
#pragma warn – par
If function doesn’t use passed function parameter , then warnings are suppressed
#pragma warn – rch
If a non reachable code is written inside a program, such warnings are suppressed by this directive.