1.宏定义
- #include
- #include
- #define unit32_t unsigned int
- #define TYPE(a,b) a##b
- int main(int argc, const char *argv[])
- {
- unit32_t i;
- TYPE(unit,32_t) j;
- return 0;
- }
2.宏函数与有参宏
- #include
- #include
- #define MAX(a,b) {if(a>b)\
- printf("%d\n",a);\
- else\
- printf("%d\n",b);\
- }
- #define Max(a,b) ({ int ret;\
- if(a>b)\
- ret=a;\
- else;\
- ret=b;\
- ret;\
- 10000;\
- })
-
- int main(int argc, const char *argv[])
- {
- MAX(10,20);
- printf("%d\n",Max(20,30));//输出为10000,因为函数最后一句语句为返回值
- return 0;
- }
3.宏函数与有参宏实现两数相加
- #include
- #include
- #define Sum(a,b) {printf("%d\n",a+b);}
- #define SUM(a,b) ({a+b;})
- int main(int argc, const char *argv[])
- {
- Sum(10,20);
- int sum=SUM(100,50);
- printf("%d\n",sum);
- return 0;
- }
4.
1、假设屋内有三个LED等,分别是LED_1,LED_2,LED_3,
每一个led等分别有两种状态,LED_ON,LED_OFF,
设计程序模拟,灯的初始化,和控制灯状态的函数
(要求:分别初始化三盏灯,每个灯都有两种状态)
写两个函数:
1、led_init(LED ) ---->初始化LED灯的函数,参数是枚举类型
2、led_con(LED,LED_C) ------>控制灯状态的函数,两个参数,分别是LED灯,LED_C灯的状态
- #include
- //定义了一个led灯的枚举类型
- typedef enum led
- {
- LED_1=1,
- LED_2,
- LED_3,
- }LED;
-
- typedef enum led_c
- {
- LED_OFF,
- LED_ON,
- }LED_C;
-
- //初始化LED灯的函数
- void led_init(LED led)
- {
- switch(led)
- {
- case LED_1: //直接使用枚举项对枚举变量判断
- printf("初始化了LED_1灯\n");
- break;
- case LED_2:
- printf("初始化了LED_2灯\n");
- break;
- case LED_3:
- printf("初始化了LED_3灯\n");
- break;
- }
- }
- //控制灯开关的函数
- void led_con(LED led,LED_C c)
- {
- switch(led)
- {
- case LED_1: //直接使用枚举项对枚举变量判断
- switch(c)
- {
- case LED_ON:
- printf("打开了LED_1灯\n");
- break;
- case LED_OFF:
- printf("关闭了LED_1灯\n");
- break;
-
- }
- break;
- case LED_2:
- switch(c)
- {
- case LED_ON:
- printf("打开了LED_2灯\n");
- break;
- case LED_OFF:
- printf("关闭了LED_2灯\n");
- break;
-
- }
- break;
-
- case LED_3:
- switch(c)
- {
- case LED_ON:
- printf("打开了LED_3灯\n");
- break;
- case LED_OFF:
- printf("关闭了LED_3灯\n");
- break;
-
- }
- }
- }
- int main(int argc, const char *argv[])
- {
- LED led = LED_2;
-
- //调用初始化函数时,直接使用枚举项进行传参
- led_init(LED_1);
- led_init(LED_2);
- led_init(LED_3);
-
- //调用控制函数时,通过枚举变量传参,led是哪一个枚举项,就控制哪一盏灯的状态
- led_con(led,LED_ON);
- led_con(led,LED_OFF);
- return 0;
- }
