Introduction to Programming Lecture 23 Preprocessors and Header files
Today’s Lecture Preprocessor Directives Header Files Macros
Preprocessor
#include <iostream.h>
#
#include #include <iostream.h> #include <stdlib.h> #include <fstream.h> #include <stream.h>
5:10 to 5:23
5:24 to 5:41
Re-locatable Executable
MyHeader.h
#include “MyHeader.h”
#include <iostream.h>
#define
#define PI 3.141592
Preprocessor Directives #if #else #endif #elif #ifdef #ifndef #error
Preprocessor Directives #ident #import #line #machine #system #warning
Example #ifdef PI
# define PI # ifdef PI
# define DEBUG # ifdef DEBUG
Conditional Compilation Macro Translation
#undef DEBUG
#include <conio.h> #include <conio.h> Consol Input Output
#include <conio.h> #include <conio.c>
int getche ( ) ;
Get Character With Echo
#ifdef __cplusplus extern "C" { #endif - - }
Macro
Example 1 #define SQUARE ( X ) X * X main ( ) { int i = 5 , j ; : } i * i ; SQUARE ( i ) ;
Example 2 #define SQUARE ( X ) X * X main ( ) { int i = 5 , j = 10 , k ; : k = } i + j * i + j ; SQUARE ( i + j ) ;
Example 3 #define SQUARE(X) (X)*(X) main ( ) { int i = 5 , j = 10 , k ; k = } SQUARE ( i + j ) ; ( i + j ) * ( i + j ) ;
Overhead
Code Bloat
Example 4 #define PI 3.14159 #define CIRCLEAREA ( X ) main ( ) { float radius ; cout << “ Enter radius of Circle Area : ” ; cin >> radius ; cout << “ Area of Circle Area is ” << } ( ( PI ) * ( X ) * ( X ) ) PI * X * X CIRCLEAREA ( 2 * radius ) ; CIRCLEAREA ( radius ) ; ( ( PI ) * ( radius ) * ( radius ) ) ;
Header Files
Header File #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h>
In Next Lecture Memory Allocation