/*
* */
#include<stdio.h>
#define MAX(x,y) ((x)<(y)?(y):(x))
#define MIN(X,Y) ({\
typeof (X) x_ = (X);\
typeof (Y) y_ = (Y);\
(x_ < y_) ? x_ : y_; })
/*({...}) , ( Scope)*/
int foo(int *flag);
int foo(int *flag)
{
*flag = *flag + 3;
return *flag;
}
int main()
{
int a=3,b=5,c;
c = MAX(b,foo(&a));
printf("a,b,c=%d,%d,%d
",a,b,c);
/* a=9,b=5,c=9, MIN a 2 */
c = MIN(b,foo(&a));
printf("a,b,c=%d,%d,%d
",a,b,c);
return 0;
}
/* :
* [root@bogon c_study]# ./hong_max_min
* a,b,c=9,5,9
* a,b,c=12,5,5
* MIN */