PreprocessorPreprocessor DirectivesAdvantages#defineDefine FunctionsFile inclusionFile inclusion formatsStandard C librariesMath Library Functionsstdlib.hstring.hCustom header filesConditional compilationExamplesPreprocessor•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 endpreprocessor compilerPreprocessor Directives•Macro definition–#define, #undef•File inclusion–#include•Conditional Compilation–#if, #ifdef, #ifndef, #elseif, #else•OthersAdvantages•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 codedefTime.hstruct 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;Your codeFile 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 foundStandard 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 functionMath 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.exestdlib.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 controlstring.h•All the string handling functions –strcpy –strcat –strcmpCustom 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 declarationConditional 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–#endifExamples•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
View Full Document