• c高级day5(9.12)宏和Makefile


    1.宏定义

    1. #include
    2. #include
    3. #define unit32_t unsigned int
    4. #define TYPE(a,b) a##b
    5. int main(int argc, const char *argv[])
    6. {
    7. unit32_t i;
    8. TYPE(unit,32_t) j;
    9. return 0;
    10. }

    2.宏函数与有参宏

    1. #include
    2. #include
    3. #define MAX(a,b) {if(a>b)\
    4. printf("%d\n",a);\
    5. else\
    6. printf("%d\n",b);\
    7. }
    8. #define Max(a,b) ({ int ret;\
    9. if(a>b)\
    10. ret=a;\
    11. else;\
    12. ret=b;\
    13. ret;\
    14. 10000;\
    15. })
    16. int main(int argc, const char *argv[])
    17. {
    18. MAX(10,20);
    19. printf("%d\n",Max(20,30));//输出为10000,因为函数最后一句语句为返回值
    20. return 0;
    21. }

    3.宏函数与有参宏实现两数相加

    1. #include
    2. #include
    3. #define Sum(a,b) {printf("%d\n",a+b);}
    4. #define SUM(a,b) ({a+b;})
    5. int main(int argc, const char *argv[])
    6. {
    7. Sum(10,20);
    8. int sum=SUM(100,50);
    9. printf("%d\n",sum);
    10. return 0;
    11. }

    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灯的状态

    1. #include
    2. //定义了一个led灯的枚举类型
    3. typedef enum led
    4. {
    5. LED_1=1,
    6. LED_2,
    7. LED_3,
    8. }LED;
    9. typedef enum led_c
    10. {
    11. LED_OFF,
    12. LED_ON,
    13. }LED_C;
    14. //初始化LED灯的函数
    15. void led_init(LED led)
    16. {
    17. switch(led)
    18. {
    19. case LED_1: //直接使用枚举项对枚举变量判断
    20. printf("初始化了LED_1灯\n");
    21. break;
    22. case LED_2:
    23. printf("初始化了LED_2灯\n");
    24. break;
    25. case LED_3:
    26. printf("初始化了LED_3灯\n");
    27. break;
    28. }
    29. }
    30. //控制灯开关的函数
    31. void led_con(LED led,LED_C c)
    32. {
    33. switch(led)
    34. {
    35. case LED_1: //直接使用枚举项对枚举变量判断
    36. switch(c)
    37. {
    38. case LED_ON:
    39. printf("打开了LED_1灯\n");
    40. break;
    41. case LED_OFF:
    42. printf("关闭了LED_1灯\n");
    43. break;
    44. }
    45. break;
    46. case LED_2:
    47. switch(c)
    48. {
    49. case LED_ON:
    50. printf("打开了LED_2灯\n");
    51. break;
    52. case LED_OFF:
    53. printf("关闭了LED_2灯\n");
    54. break;
    55. }
    56. break;
    57. case LED_3:
    58. switch(c)
    59. {
    60. case LED_ON:
    61. printf("打开了LED_3灯\n");
    62. break;
    63. case LED_OFF:
    64. printf("关闭了LED_3灯\n");
    65. break;
    66. }
    67. }
    68. }
    69. int main(int argc, const char *argv[])
    70. {
    71. LED led = LED_2;
    72. //调用初始化函数时,直接使用枚举项进行传参
    73. led_init(LED_1);
    74. led_init(LED_2);
    75. led_init(LED_3);
    76. //调用控制函数时,通过枚举变量传参,led是哪一个枚举项,就控制哪一盏灯的状态
    77. led_con(led,LED_ON);
    78. led_con(led,LED_OFF);
    79. return 0;
    80. }

    XMind:

  • 相关阅读:
    文档管理系统对会计部门的重要性
    linux进程间通信之共享内存
    基于 CentOS 7 构建 LVS群集
    vue +vant 封装请求以及不同环境下请求不同的api服务器(三)
    2023年MySQL实战核心技术场景面试篇-持续更新
    根据组件类型与条件动态添加下拉框及选项
    vue3 中使用 echarts 图表——准备篇
    python练习题(markdown中的60道题)
    物联网设备安全性:构建可信任的智能生态系统
    Linux入门(三)
  • 原文地址:https://blog.csdn.net/yymbxqdm/article/details/132839195