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;
  • 相关阅读:
    python基础总结二
    HTTP和HTTPS的区别
    通过HTTP请求响应过程了解HTTP协议
    稳定性测试+易用性测试
    容错测试点
    功能测试思考点
    功能测试-UI测试思考点
    字符编码-11
    字典+再识函数-8
    web API的概念
  • 原文地址:https://www.cnblogs.com/shanwenbin/p/2834964.html
Copyright © 2011-2022 走看看