题目描述
#if #ifdef和#ifndef的综合应用。
源代码
#include<stdio.h>
#define MAX
#define MAXIMUM(x,y)(x>y)?x:y
#define MINIMUM(x,y) (x>y)?y:x
int main()
{
int a=10,b=20;
#ifdef MAX
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#else
printf("更小的数字是 %d\n",MINIMUM(a,b));
#endif
#ifndef MIN
printf("更小的数字是 %d\n",MINIMUM(a,b));
#else
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#endif
#undef MAX
#ifdef MAX
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#else
printf("更小的数字是 %d\n",MINIMUM(a,b));
#endif
#define MIN
#ifndef MIN
printf("更小的数字是 %d\n",MINIMUM(a,b));
#else
printf("更大的数字是 %d\n",MAXIMUM(a,b));
#endif
return 0;
}
借助 #define 宏定义自定义 MAXIMUM 、 MINIMUM 用于数值比较,再通过 #ifdef (判断宏已定义)、 #ifndef (判断宏未定义 )、 #undef (取消宏定义 )构成条件编译逻辑,动态决定代码执行分支。
输出结果
更大的数字是 20
更小的数字是 10
更小的数字是 10
更大的数字是 20