zoukankan      html  css  js  c++  java
  • 采用enum定义操作码的2B错误总结

    前段时间写了一个用于wince设备和pc间数据传输的模块,为了实现wince和pc间能方便的操作
    所以在pc和wince设备间采用enum定义了一系列的操作码,操作码定义如下:

    typedef enum
    {
        FUNCCODE_NONE = 0, ///< 无
        FUNCCODE_GETID,    ///< 获取设备ID
        FUNCCODE_REBOOT,   ///< 重启设备
    }FuncCode;

     但是问题来了由于wince设备和pc间的程序并不是同时发布的,由于需求的变更,pc的版本被更新了
    在pc的操作中又添加了一个功能码,定义如下:

    typedef enum
    {
        FUNCCODE_NONE = 0,  ///< 无
        FUNCCODE_GEVERSION, ///< 获取设备ID
        FUNCCODE_GETID,     ///< 获取设备ID
        FUNCCODE_REBOOT,    ///< 重启设备
    }FuncCode;

     接下来2B的问题就出现了,由于wince设备和pc间的程序并未同步发布,因此当用新版的pc端程序去操作带有旧版程序的设备时
    虽然我们要采用FUNCCODE_GEVERSION去获取版本信息时,却对应的设备端操作码确是FUNCCODE_GETID操作返回的结果
    为了让新旧版的程序能够兼容,因此将操作码定义成了如下的形式

    typedef enum
    { 
        FUNCCODE_NONE       = 0x00, ///< 无
        FUNCCODE_GEVERSION  = 0x01, ///< 获取设备ID
        FUNCCODE_GETID      = 0x02, ///< 获取设备ID
        FUNCCODE_REBOOT     = 0x03, ///< 重启设备
    }FuncCode;
  • 相关阅读:
    sentinel-initFunc&控制台
    Sentinel-FlowSlot
    Sentinel-AuthoritySlot&SystemSlot&LogSlot
    Sentinel-DegradeSlot
    Sentinel-ClusterBuilderSlot
    Sentinel-NodeSelectorSlot
    Sentinel整体架构
    Recyclers对象池设计
    加密算法的使用场景
    FastDFS分布式
  • 原文地址:https://www.cnblogs.com/shanwenbin/p/2834964.html
Copyright © 2011-2022 走看看