zoukankan      html  css  js  c++  java
  • 编程小技巧——对传入参数的检查

    头文件定义部分:

    #define HAL_LED_1 0x01
    #define HAL_LED_2 0x02
    #define HAL_LED_3 0x04
    #define HAL_LED_4 0x08
    #define HAL_LED_ALL (HAL_LED_1 | HAL_LED_2 | HAL_LED_3 | HAL_LED_4 )

     //add later: 回过头来看这里的宏定义也是有技巧的,为什么每一个位置1代表一个灯,这为后面的方面做了铺垫。

    在函数调用时传入参数:

    HalLedSet (HAL_LED_1, HAL_LED_MODE_ON);  //这里还可以传入多个参数

    例如:要使LED1和LED2同时点亮,那么在这里就可以传入两个参数,即HAL_LED_1和HAL_LED_2,如下:

    HalLedSet (HAL_LED_1 ^ HAL_LED_2, HAL_LED_MODE_ON);

    Tips:这也是一个技巧,用宏定义使传入参数更加灵活多变 

    在函数实现时检查参数:

    uint8 HalLedSet (uint8 leds, uint8 mode)

    {

      ......

      led = HAL_LED_1;

      leds &= HAL_LED_ALL;  //这里可以达到检查参数的目的。这里还可以

      ......

      while(leds)

      {

        ......

        leds ^= led;   //返回未处理的事件,即在while循环中检测哪个灯还没有点亮。每次循环leds中处理的灯的位置0

        led <<= 1;  

      }

    }

    --------------------------------------------------------------------------------------------------------------------------------------

    在这样一小段代码里就有这么多有趣的知识。在以后的编程中尽量使用这些技巧,这对程序的健壮性有很重要的作用。

    当你坚持做一件完全正确的事情,有可能在很长一段时间内,你的价值都是零。
  • 相关阅读:
    简单bb两句
    P2894 [USACO08FEB]Hotel G
    文艺平衡树
    CS184.1X 计算机图形学导论作业1
    C++ Primer Plus章节编程练习(第五章)
    C++ Primer Plus章节编程练习(第六章)
    CS184.1X 计算机图形学导论作业0
    C++ Primer Plus章节编程练习(第四章)
    计算机图形学之光栅图形学算法
    Codeforces 980B
  • 原文地址:https://www.cnblogs.com/lweleven/p/ble_checkparam.html
Copyright © 2011-2022 走看看