ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
Preprocessor



  Preprocessor,
     math.h
     stdlib.h
Preprocessor
? Preprocessor
  ¨C Permits to define simple macros that are evaluated and
    expanded prior to compilation.
  ¨C Commands begin with a ¡®#¡¯.
  ¨C   #define : defines a macro             [Ex]    #include <stdio.h>
  ¨C   #undef : removes a macro definition           #define PI 3.14159
  ¨C   #include : insert text from file
  ¨C   #if : conditional based on value of expression
  ¨C   #ifdef : conditional based on whether macro defined
  ¨C   #ifndef : conditional based on whether macro is not defined
  ¨C   #else : alternative
  ¨C   #elif : conditional alternative
  ¨C   defined() : preprocessor function: 1 if name defined, else 0
       #if defined(__NetBSD__)

                                                                         2
Preprocessor
? #include <filename> or #include ¡°filename¡±
   ¨C Include contents of filename in this position (not modify your
     source file, but make a new temporary file just before compile)
   ¨C <> is used if filename is in the system default directory
     (Most of the standard header files are in the default directory)
   ¨C ¡°¡± is used if filename is not in the default directory
     (Write the path to filename if it is not in the current directory)



[Ex]
                                     Include stdio.h which is in the default
       #include <stdio.h>
                                     directory
       #include ¡°./test/file.h¡±

                                     Include file.h in test directory.




                                                                               3
Preprocessor
? Header file
   ¨C Header files with the extension ¡°.h¡± are included by #include


? Contents of Header file
   ¨C Prototype of Function
   ¨C ¡®extern¡¯ global variables     Refer to Modulization
   ¨C type definition, etc.


? Typical header files
   ¨C stdio.h, stdlib.h, math.h, etc.




                                                                     4
Preprocessor
? #define [identifier] [replacement]
       ¨C replaces any occurrence of identifier in the rest of the code by
         replacement.
       ¨C replacement can be an expression, a statement, a block or simply
         anything.


[Ex]

       #define LIMIT 100            Preprocessor regards LIMIT as 100,
       #define PI 3.14159           PI as 3.141592.




                                                                            5
Preprocessor
? #define
   #include <stdio.h>
   #define LIMIT 100
   #define PI 3.14159
   void main(void)
   {
      printf( ¡°%d, %fn¡±, LIMIT, PI ) ;
   }
                                          Preprocessor makes a temporary file.

   ¡­
                                       After that, compile the temporary file.
   void main(void)
   {
      printf( ¡°%d, %fn¡±, 100, 3.14159 ) ;
   }


                                                                                 6
Preprocessor
     ? Example

#include <stdio.h>   void main(void)
                     {
#define YELLOW 0         int color ;
#define RED    1
#define BLUE   2         for( color = YELLOW ; color <= BLUE ; color++ ) {
                             switch( color ) {
                             case YELLOW : printf( ¡°Yellown¡± ) ; break ;
                             case RED : printf( ¡°Redn¡± ) ; break ;
                             case BLUE : printf( ¡°Bluen¡± ) ; break ;
                             }
                         }
                     }

                                                                             7
Preprocessor
? Macro function: Declare a function by using #define

              #define multiply(a,b) ((a)*(b))

              void main() {
                  int c = multiply(3,2) ;
              }

   ¨C Compiled after the code modified by preprocessor as follows.

              void main() {
                  int c = ((3)*(2)) ;
              }




                                                                    8
Preprocessor
? Macro function: Be careful! Simple replacement!!
   ¨C what will happen?

               #define multiply(a,b) a*b

               void main() {
                   int c = multiply(3+1,2+2) ;
               }

   ¨C Compiled after the code modified by preprocessor as follows.

               void main() {
                   int c = 3+1*2+2 ;
               }

   ¨C Use ¡®()¡¯ for safety.

                                                                    9
Math functions

  (math.h)
Mathematical Functions

? Mathematical Functions
  ¨C sqrt(), pow(), exp(), log(), sin(), cos(), tan(), etc.
  ¨C Include the Header file <math.h>
  ¨C All the math functions have argument with double type and
    return value with double type.

        [Ex] double sin(double); /* argument is the angle in radians */
            double pow(double, double);


  ¨C Give ¡°-lm¡± flag when you compile this with Unix(gcc).


        [Ex] gcc filename.c -lm


                                                                          11
Mathematical Functions

[Ex]   #include <stdio.h>
       #include <math.h>

       #define PI 3.1415926

       int main() {
           double r = PI / (2*90);        /* 180 radian = 1 degree */
           int i;

           for(i=0; i<=90; i+=5) {
                 printf("cos(%d) = %ft", i, cos(r*i));
                 printf("sin(%d) = %ft", i, sin(r*i));
                 printf("tan(%d) = %fn", i, tan(r*i));
           } cos(0) = 1.000000    sin(0) = 0.000000 tan(0) = 0.000000
       }     ¡­
             cos(45) = 0.707107   sin(45) = 0.707107   tan(45) = 1.000000
             ¡­
             cos(90) = 0.000000   sin(90) = 1.000000   tan(90) = 37320539.634355

                                                                                   12
Misc. functions

  (stdlib.h)
Miscellaneous functions
? Standard Headers you should know about:
  ¨C stdio.h: file and console (also a file) IO
      ? perror, printf, open, close, read, write, scanf, etc.
  ¨C stdlib.h: common utility functions
      ? malloc, calloc, strtol, atoi, etc
  ¨C string.h: string and byte manipulation
      ? strlen, strcpy, strcat, memcpy, memset, etc.
  ¨C math.h: math functions
      ? ceil, exp, floor, sqrt, etc.




                                                                14
Miscellaneous functions
? Standard Headers you should know about:
  ¨C ctype.h: character types
      ? isalnum, isprint, isupport, tolower, etc.
  ¨C errno.h: defines errno used for reporting system errors
  ¨C signal.h: signal handling facility
      ? raise, signal, etc
  ¨C stdint.h: standard integer
      ? intN_t, uintN_t, etc
  ¨C time.h: time related facility
      ? asctime, clock, time_t, etc.




                                                              15
Miscellaneous functions

? Miscellaneous Functions
  ¨C atoi(), rand(), srand()
  ¨C <stdlib.h>: Common Utility Functions
  ¨C atoi(¡°String¡±): Convert string to integer
     int a = atoi( ¡°1234¡± ) ;

  ¨C rand() : Generate random number
     int a = rand() ;

  ¨C srand( Initial Value ) : Initialize random number generator
     srand( 3 ) ;



                                                                  16
Miscellaneous functions

? Ex.: Print 10 random numbers
      #include <stdio.h>
      #include <stdlib.h>

      int main() {
                                       Run this Program twice
         for(i=0; i<10; i++)
           printf(¡°%dn¡±, rand() ) ;
      }

? Print different random number in every execution
      #include <stdio.h>
      #include <stdlib.h>
      #include <time.h>

      int main() {
         srand( (int)time(NULL) ) ;
         for(i=0; i<10; i++)
           printf(¡°%dn¡±, rand() ) ;
      }
                                                                17

More Related Content

3 1. preprocessor, math, stdlib

  • 1. Preprocessor Preprocessor, math.h stdlib.h
  • 2. Preprocessor ? Preprocessor ¨C Permits to define simple macros that are evaluated and expanded prior to compilation. ¨C Commands begin with a ¡®#¡¯. ¨C #define : defines a macro [Ex] #include <stdio.h> ¨C #undef : removes a macro definition #define PI 3.14159 ¨C #include : insert text from file ¨C #if : conditional based on value of expression ¨C #ifdef : conditional based on whether macro defined ¨C #ifndef : conditional based on whether macro is not defined ¨C #else : alternative ¨C #elif : conditional alternative ¨C defined() : preprocessor function: 1 if name defined, else 0 #if defined(__NetBSD__) 2
  • 3. Preprocessor ? #include <filename> or #include ¡°filename¡± ¨C Include contents of filename in this position (not modify your source file, but make a new temporary file just before compile) ¨C <> is used if filename is in the system default directory (Most of the standard header files are in the default directory) ¨C ¡°¡± is used if filename is not in the default directory (Write the path to filename if it is not in the current directory) [Ex] Include stdio.h which is in the default #include <stdio.h> directory #include ¡°./test/file.h¡± Include file.h in test directory. 3
  • 4. Preprocessor ? Header file ¨C Header files with the extension ¡°.h¡± are included by #include ? Contents of Header file ¨C Prototype of Function ¨C ¡®extern¡¯ global variables Refer to Modulization ¨C type definition, etc. ? Typical header files ¨C stdio.h, stdlib.h, math.h, etc. 4
  • 5. Preprocessor ? #define [identifier] [replacement] ¨C replaces any occurrence of identifier in the rest of the code by replacement. ¨C replacement can be an expression, a statement, a block or simply anything. [Ex] #define LIMIT 100 Preprocessor regards LIMIT as 100, #define PI 3.14159 PI as 3.141592. 5
  • 6. Preprocessor ? #define #include <stdio.h> #define LIMIT 100 #define PI 3.14159 void main(void) { printf( ¡°%d, %fn¡±, LIMIT, PI ) ; } Preprocessor makes a temporary file. ¡­ After that, compile the temporary file. void main(void) { printf( ¡°%d, %fn¡±, 100, 3.14159 ) ; } 6
  • 7. Preprocessor ? Example #include <stdio.h> void main(void) { #define YELLOW 0 int color ; #define RED 1 #define BLUE 2 for( color = YELLOW ; color <= BLUE ; color++ ) { switch( color ) { case YELLOW : printf( ¡°Yellown¡± ) ; break ; case RED : printf( ¡°Redn¡± ) ; break ; case BLUE : printf( ¡°Bluen¡± ) ; break ; } } } 7
  • 8. Preprocessor ? Macro function: Declare a function by using #define #define multiply(a,b) ((a)*(b)) void main() { int c = multiply(3,2) ; } ¨C Compiled after the code modified by preprocessor as follows. void main() { int c = ((3)*(2)) ; } 8
  • 9. Preprocessor ? Macro function: Be careful! Simple replacement!! ¨C what will happen? #define multiply(a,b) a*b void main() { int c = multiply(3+1,2+2) ; } ¨C Compiled after the code modified by preprocessor as follows. void main() { int c = 3+1*2+2 ; } ¨C Use ¡®()¡¯ for safety. 9
  • 10. Math functions (math.h)
  • 11. Mathematical Functions ? Mathematical Functions ¨C sqrt(), pow(), exp(), log(), sin(), cos(), tan(), etc. ¨C Include the Header file <math.h> ¨C All the math functions have argument with double type and return value with double type. [Ex] double sin(double); /* argument is the angle in radians */ double pow(double, double); ¨C Give ¡°-lm¡± flag when you compile this with Unix(gcc). [Ex] gcc filename.c -lm 11
  • 12. Mathematical Functions [Ex] #include <stdio.h> #include <math.h> #define PI 3.1415926 int main() { double r = PI / (2*90); /* 180 radian = 1 degree */ int i; for(i=0; i<=90; i+=5) { printf("cos(%d) = %ft", i, cos(r*i)); printf("sin(%d) = %ft", i, sin(r*i)); printf("tan(%d) = %fn", i, tan(r*i)); } cos(0) = 1.000000 sin(0) = 0.000000 tan(0) = 0.000000 } ¡­ cos(45) = 0.707107 sin(45) = 0.707107 tan(45) = 1.000000 ¡­ cos(90) = 0.000000 sin(90) = 1.000000 tan(90) = 37320539.634355 12
  • 13. Misc. functions (stdlib.h)
  • 14. Miscellaneous functions ? Standard Headers you should know about: ¨C stdio.h: file and console (also a file) IO ? perror, printf, open, close, read, write, scanf, etc. ¨C stdlib.h: common utility functions ? malloc, calloc, strtol, atoi, etc ¨C string.h: string and byte manipulation ? strlen, strcpy, strcat, memcpy, memset, etc. ¨C math.h: math functions ? ceil, exp, floor, sqrt, etc. 14
  • 15. Miscellaneous functions ? Standard Headers you should know about: ¨C ctype.h: character types ? isalnum, isprint, isupport, tolower, etc. ¨C errno.h: defines errno used for reporting system errors ¨C signal.h: signal handling facility ? raise, signal, etc ¨C stdint.h: standard integer ? intN_t, uintN_t, etc ¨C time.h: time related facility ? asctime, clock, time_t, etc. 15
  • 16. Miscellaneous functions ? Miscellaneous Functions ¨C atoi(), rand(), srand() ¨C <stdlib.h>: Common Utility Functions ¨C atoi(¡°String¡±): Convert string to integer int a = atoi( ¡°1234¡± ) ; ¨C rand() : Generate random number int a = rand() ; ¨C srand( Initial Value ) : Initialize random number generator srand( 3 ) ; 16
  • 17. Miscellaneous functions ? Ex.: Print 10 random numbers #include <stdio.h> #include <stdlib.h> int main() { Run this Program twice for(i=0; i<10; i++) printf(¡°%dn¡±, rand() ) ; } ? Print different random number in every execution #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand( (int)time(NULL) ) ; for(i=0; i<10; i++) printf(¡°%dn¡±, rand() ) ; } 17