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;
  • 相关阅读:
    贪心算法
    机器视觉算法与应用读书笔记(算法)
    多层感知机面临的问题
    反向传播
    卷积后的输出尺寸
    TensorFlow入门
    MyBatis-使用XML或注解的简单实例
    在web.xml中配置SpringMVC
    深入理解Class类和Object类
    MySQL索引
  • 原文地址:https://www.cnblogs.com/shanwenbin/p/2834964.html
Copyright © 2011-2022 走看看