#include<stdio.h>

#define Calculate_Max(A,B) A>B?A:B

#define Calculate_Min(A,B) A<B?A:B

#define Calculate(A,B,NAME) Calculate_##NAME(A,B)

int main(void)
{
        printf("%d\n",Calculate(5,8,Max));
        return 0;
}

使用宏函数或者宏函数时,注意如下几点:

  (1)宏函数的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。

  (2)宏函数定义要注意格式,尤其是括号。