/* * ISA 563, Spring 2011 * Copyleft by Muhammad Abdulla */ #include /* * macros.c -- demonstrates the use of macros */ #define PI 3.14159265 #define AREA(r) (PI * r * r) #define SQUARE1(a) a*a #define SQUARE2(a) (a)*(a) #define SQUARE3(a) ((a)*(a)) int main ( int argc, char *argv[] ) { char *fname = "/etc/shadow"; FILE *fp; double r = 2.0; printf("Area of a circle with a radius %g is %g\n", r, AREA(r)); printf("r = %g, square (v1) of r is: %g\n", r, SQUARE1(r)); printf("r = %g, square (v1) of r+1 is: %g\n", r, SQUARE1(r+1)); printf("r = %g, square (v2) of r+1 is: %g\n", r, SQUARE2(r+1)); printf("r = %g, 1 over square (v1) of r+1 is: %g\n", r, 1.0/SQUARE1(r+1)); printf("r = %g, 1 over square (v2) of r+1 is: %g\n", r, 1.0/SQUARE2(r+1)); printf("r = %g, 1 over square (v3) of r+1 is: %g\n", r, 1.0/SQUARE3(r+1)); printf("r = %g, ", r); SQUARE3(r++); printf("but after calling SQUARE3(r++), r = %g\n", r); fp = fopen(fname, "r"); if ( fp == NULL ) { fprintf(stderr, "Could not open file %s, exiting. (file: %s, line: %d)\n", fname, __FILE__, __LINE__); } return 0; }