#include #include #include #include extern int errno; #define M 100 #define K 400 * Q #define SQUARE(X) X * X #define Q 4 #define U 10 * U #define SWAP(TYPE,A,B) {TYPE tmp=A; A=B; B=tmp;} #define MAX(A,B) ( (A) > (B) ? (A) : (B) ) int f( int z ) { printf( "In f() -- Money Transferred.\n" ); /* does some critical stuff */ return z * 10; } int main( int argc, char *argv[] ) { int i; int x = M; int y = SQUARE(K); int z = MAX( x, f(y) ); printf( "maximum is %d\n", z ); for ( i = 0 ; i < argc ; i++ ) { printf( "argument %d is %s\n", i, argv[i] ); } if ( argc != 2 ) { fprintf( stderr, "ERROR: Invalid usage\n" ); fprintf( stderr, "USAGE: %s \n", argv[0] ); exit( 1 ); } { /* new scope */ int rc = open( argv[1], O_RDONLY, 0 ); if ( rc < 0 ) { printf( "errno is %d\n", errno ); perror( "Error opening file" ); } } printf( "Hi.\n" ); printf( "x is %d and y is %d\n", x, y ); SWAP( int, x, y ) /* NO ; HERE */ printf( "x is %d and y is %d\n", x, y ); return 0; }