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;  

      }

    }

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

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

    当你坚持做一件完全正确的事情,有可能在很长一段时间内,你的价值都是零。
  • 相关阅读:
    团队冲刺个人总结第二天
    Gym
    Codeforces Round #162 (Div. 2) A~D 题解
    Wormholes 虫洞 BZOJ 1715 spfa判断负环
    修剪草坪 单调队列优化dp BZOJ2442
    没有上司的舞会 树形dp
    餐巾计划问题 费用流
    最小路径覆盖问题 最大流
    [JSOI2007]麻将 模拟 BZOJ1028
    CF702F T-Shirts FHQ Treap
  • 原文地址:https://www.cnblogs.com/lweleven/p/ble_checkparam.html
Copyright © 2011-2022 走看看