Introduction to Programming Introduction to Programming Lecture 23 Lecture 23 Preprocessors and Preprocessors and Header files Header files
Dec 18, 2014
Introduction to Introduction to ProgrammingProgramming
Lecture 23Lecture 23
Preprocessors and Preprocessors and Header filesHeader files
Today’s LectureToday’s Lecture
Preprocessor DirectivesPreprocessor Directives Header FilesHeader Files MacrosMacros
PreprocessPreprocessoror
#include <iostream.h>#include <iostream.h>
##
#include#include #include <iostream.h>#include <iostream.h> #include <stdlib.h>#include <stdlib.h> #include <fstream.h>#include <fstream.h> #include <stream.h>#include <stream.h>
5:10 to 5:23
5:24 to 5:41
Re-locatable Re-locatable ExecutableExecutable
MyHeader.MyHeader.hh
#include “MyHeader.h”#include “MyHeader.h”
#include #include <iostream.h><iostream.h>
#define#define
#define PI #define PI 3.1415923.141592
Preprocessor Preprocessor DirectivesDirectives #if#if #else#else #endif#endif #elif#elif #ifdef#ifdef #ifndef#ifndef #error#error
Preprocessor Preprocessor DirectivesDirectives
#ident#ident #import#import #line#line #machine#machine #system#system #warning#warning
Example Example
#ifdef PI#ifdef PI
# define PI# define PI
# ifdef PI# ifdef PI
# define DEBUG# define DEBUG
# ifdef DEBUG# ifdef DEBUG
Conditional Conditional CompilationCompilation
Macro Macro TranslationTranslation
#undef #undef DEBUGDEBUG
#include #include <conio.h><conio.h>
Consol Input Output Consol Input Output
#include #include <conio.h><conio.h>#include #include
<conio.c><conio.c>
int getche int getche ( ) ;( ) ;
Get Character Get Character With EchoWith Echo
#ifdef __cplusplus#ifdef __cplusplusextern "C" {extern "C" {#endif#endif
- -- -- -- -
#ifdef __cplusplus#ifdef __cplusplus}}#endif#endif
MacroMacro
#define SQUARE ( X ) X * X#define SQUARE ( X ) X * Xmain ( )main ( ){{
int i = 5 , j ;int i = 5 , j ; ::
}}
Example 1Example 1
j =j =SQUARE ( i ) ; SQUARE ( i ) ; i * i ;i * i ;
Example 2 Example 2 ##define SQUARE ( X ) X * Xdefine SQUARE ( X ) X * Xmain ( )main ( ){{
int i = 5 , j = 10 , k ;int i = 5 , j = 10 , k ;::
k =k =}}
SQUARE ( i + j ) ; SQUARE ( i + j ) ; i + j * i + j ;i + j * i + j ;
Example 3Example 3#define SQUARE(X) #define SQUARE(X)
(X)*(X)(X)*(X)
main ( )main ( )
{{
int i = 5 , j = 10 , k ;int i = 5 , j = 10 , k ;
k =k =
}}
SQUARE ( i + j ) ;SQUARE ( i + j ) ;( i + j ) * ( i + j ) ;( i + j ) * ( i + j ) ;
OverheadOverhead
Code BloatCode Bloat
Example 4Example 4#define PI 3.14159#define PI 3.14159#define CIRCLEAREA ( X )#define CIRCLEAREA ( X )main ( )main ( ){{
float radius ;float radius ;cout << “ Enter radius of Circle Area : ” ;cout << “ Enter radius of Circle Area : ” ;cin >> radius ;cin >> radius ;cout << “ Area of Circle Area is ” cout << “ Area of Circle Area is ”
<<<<
}}
PI * X * XPI * X * X( ( PI ) * ( X ) * ( X ) )( ( PI ) * ( X ) * ( X ) )
CIRCLEAREA ( radius ) ;CIRCLEAREA ( radius ) ;( ( PI ) * ( radius ) * ( radius ) ) ;( ( PI ) * ( radius ) * ( radius ) ) ;CIRCLEAREA ( 2 * radius ) ;CIRCLEAREA ( 2 * radius ) ;
Header FilesHeader Files
Header FileHeader File #include #include <iostream.h><iostream.h>
#include <stdlib.h>#include <stdlib.h> #include <stdio.h>#include <stdio.h> #include <string.h>#include <string.h>
In Next LectureIn Next Lecture
Memory AllocationMemory Allocation