150 likes | 428 Views
Preprocessor. All preprocessor directives or commands begin with a #. E.g. #include <stdio.h> C program → Modified C program → Object Code Can appear anywhere in the program No “;” in the end. preprocessor. compiler. Preprocessor Directives. Macro definition #define, #undef
E N D
Preprocessor • All preprocessor directives or commands begin with a #. • E.g. #include <stdio.h> C program → Modified C program → Object Code • Can appear anywhere in the program • No “;” in the end preprocessor compiler
Preprocessor Directives • Macro definition • #define, #undef • File inclusion • #include • Conditional Compilation • #if, #ifdef, #ifndef, #elseif, #else • Others
Advantages • Easy to • Develop program • Read programs • Modify programs • C code more transportable between different machine architectures
#define • To define constants or any macro substitution. #define <macro> <replacement name> E.g. #define FALSE 0 #define TRUE !FALSE • To undefined a macro. E.g. #undef FALSE • A macro must be undefined before being redefined to a different value.
Define Functions • E.g. To get the maximum of two variables: #define max(A,B) ( (A) > (B) ? (A):(B)) • If in the C code: x = max(q+r,s+t); • After preprocessing: x = ( (q+r) > (s+t) ? (q+r) : (s+t));
File inclusion • #include directive • Include the contents of another file at the point where the directive appears. • Why need file inclusion • Use built-in functions • E.g., printf(), rand(); • Reuse code struct date{ int day; char month[10]; int year; }; struct date{ int day; char month[10]; int year; }; struct date today; #include “defTime.h” → struct date today; defTime.h Your code
File inclusion formats • #include <file> • Used for system header files • File contain function prototypes for library functions • <stdlib.h> , <math.h> , etc • #include "file" • Used for header files of your own program • looks for a file in the current directory first • then system directories if not found
Standard C libraries • Build-in with your compiler • Detailed information • http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html • stdio.h • core input and output capabilities of C • printf function • scanf function
Math Library Functions • Math library functions • perform common mathematical calculations • E.g. exp(), pow(), sqrt(), fabs(), sin(), cos(). • #include <math.h> • Format for calling functions • FunctionName(argument, …, argument); • All math functions return data type double • E.g.: printf( "%.2f", sqrt( 900.0 ) ); • Arguments may be constants, variables, or expressions • Compile • gcc yourfilename.c –lm –o yourfilename.exe
stdlib.h • A variety of utility functions • rand function • A function to generate a pseudo-random integer number • Return value is in the range 0 to RAND_MAX • Example: #include <stdlib.h> int i = rand(); • memory allocation • process control
string.h • All the string handling functions • strcpy • strcat • strcmp
Custom header files • Steps for creating custom header files • Create a file with function prototypes • Save as a .h file. E.g.: filename.h • Load in other files with • #include "filename.h" • Advantage • Reuse functions and data structure declaration
Conditional compilation • Useful when • machine-dependencies • Debugging • setting certain options at compile-time. • Expressions • #if expression • #ifdef expression (same as #if defined ) • #ifudef • #elif and #else • #endif
Examples • Example: write programs that are portable to several machines or operating systems • #if defined(WINDOWS) • #elif defined(LINUX) • #elif defined(SOLARIS) • #endif • Example: Providing a default definition for a macro • #ifndef BUFFER_SIZE • #define BUFFER_SIZE 256 • #endif