Unformatted text preview:

Introduction to C Preprocessor Instructor Yin Lou 02 09 2011 Introduction to C CS 2022 Spring 2011 Lecture 8 Preprocessor I Commands to the compiler I Include files shortcuts conditional compilation I Command must start at beginning of line Introduction to C CS 2022 Spring 2011 Lecture 8 Preprocessor I Commands to the compiler I Include files shortcuts conditional compilation I Command must start at beginning of line Common Preprocessor Commands include define ifdef ifndef Introduction to C CS 2022 Spring 2011 Lecture 8 Running just the preprocessor gcc E main c o preprocessed c Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files I Includes files Literally copy paste Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files I Includes files Literally copy paste I Typically header files Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files I Includes files Literally copy paste I Typically header files Header Files Declares I External functions I Variable types I External global variables Typically named h Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files mylib h int max int a int b mylib c include mylib h int max int a int b return a b a b Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files project c include mylib h void foo m max p q Introduction to C CS 2022 Spring 2011 Lecture 8 include Header Files project c include mylib h void foo m max p q gcc o project project c mylib c Introduction to C CS 2022 Spring 2011 Lecture 8 define Macros Blind substitution inside file define malloc mymalloc define maxsize 100 p malloc maxsize printf Allocated d bytes maxsize Introduction to C CS 2022 Spring 2011 Lecture 8 define Macros Blind substitution inside file define malloc mymalloc define maxsize 100 p malloc maxsize printf Allocated d bytes maxsize is exactly the same as p mymalloc 100 printf Allocated d bytes 100 Introduction to C CS 2022 Spring 2011 Lecture 8 ifdef Conditional compilation project c ifdef DEBUG include mylib h define malloc mymalloc endif p malloc 100 Introduction to C CS 2022 Spring 2011 Lecture 8 ifdef Conditional compilation project c ifdef DEBUG include mylib h define malloc mymalloc endif p malloc 100 For debugging gcc DDEBUG o project project c mylib c For release gcc o project project c mylib c Introduction to C CS 2022 Spring 2011 Lecture 8 ifdef Conditional compilation mylib h void mymalloc int size void myfree void ptr Introduction to C CS 2022 Spring 2011 Lecture 8 ifdef Conditional compilation mylib c include stdio h include stdlib h include mylib h void mymalloc int size void ret malloc size fprintf stderr Allocating d at p n size ret return ret void myfree void ptr fprintf stderr Freeing p n ptr free ptr Introduction to C CS 2022 Spring 2011 Lecture 8 include Problems mylib1 h include mylib2 h mylib2 h include mylib1 h Introduction to C CS 2022 Spring 2011 Lecture 8 include Solution mylib1 h ifndef MYLIB1 H define MYLIB1 H include mylib2 h endif mylib2 h ifndef MYLIB2 H define MYLIB2 H include mylib1 h endif Introduction to C CS 2022 Spring 2011 Lecture 8 define More useage project c define prod a b prod2 a b 10 prod 5 6 prod2 5 6 10 Introduction to C CS 2022 Spring 2011 Lecture 8 define More useage project c define prod a b prod2 a b 10 prod 5 6 prod2 5 6 10 prod 5 6 7 prod2 5 6 7 10 BUG Introduction to C CS 2022 Spring 2011 Lecture 8 define Solution project c define prod a b prod2 a b 10 prod 5 6 7 prod2 5 6 7 10 Introduction to C CS 2022 Spring 2011 Lecture 8 define More useage project c define oldfunc a b newfunc1 a newfunc2 b oldfunc 5 6 newfunc1 5 newfunc2 6 Introduction to C CS 2022 Spring 2011 Lecture 8 define More useage project c define oldfunc a b newfunc1 a newfunc2 b oldfunc 5 6 newfunc1 5 newfunc2 6 for i 0 i 5 i oldfunc 5 6 for i 0 i 5 i newfunc1 5 newfunc2 6 Introduction to C CS 2022 Spring 2011 Lecture 8 define Solution project c define oldfunc a b do newfunc1 a newfunc b while 0 Introduction to C CS 2022 Spring 2011 Lecture 8 define More problems project c define max a b a b a b max p q p q p q Introduction to C CS 2022 Spring 2011 Lecture 8 define More problems project c define max a b a b a b max p q p q p q max f1 f2 f1 f2 f1 f2 Introduction to C CS 2022 Spring 2011 Lecture 8 define More problems project c define max a b a b a b max p q p q p q max f1 f2 f1 f2 f1 f2 Solution Be extra careful when calling a function inside code that could be a define Always use uppercase for macros to serve as reminder Introduction to C CS 2022 Spring 2011 Lecture 8


View Full Document

CORNELL CS 2022 - Preprocessor

Loading Unlocking...
Login

Join to view Preprocessor and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Preprocessor and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?