阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。(20分)
【说明】微内核架构的软件内核相对较小,主要功能和业务逻辑都通过插件实现。某国产通信芯片操作系统使用了微内核架构,其插件与核心系统通过命令方式实现通信。
其通信功能中,获取命令函数主要完成命令获取及通过校验和判断是否为合法命令,如果为合法命令,则函数返回命令字前4字节,否则返回错误码。命令最大长度为16个字节,命令格式为:
具体函数实现如图所示:
刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。(20分)
【说明】微内核架构的软件内核相对较小,主要功能和业务逻辑都通过插件实现。某国产通信芯片操作系统使用了微内核架构,其插件与核心系统通过命令方式实现通信。
其通信功能中,获取命令函数主要完成命令获取及通过校验和判断是否为合法命令,如果为合法命令,则函数返回命令字前4字节,否则返回错误码。命令最大长度为16个字节,命令格式为:
具体函数实现如图所示:
逻辑错误:if((cmdLen ==0 ) & (cmdLen > MAXCMD )) { /*长度合法性检查*/
return -1;
}
应该正为:if((cmdLen ==0 ) || (cmdLen > MAXCMD )) { /*长度合法性检查*/
return -1;
}
根据函数描述功能,该函数需要判断命令长度是否合法。如果命令长度为0或者大于最大命令长度MAXCMD,都应该认为命令长度不合法。在条件判断中,应该使用逻辑或运算符(||)连接两个条件,表示只要满足其中一个条件,就执行相应的操作。而原代码中使用了按位与运算符(&),这要求两个条件同时满足才会执行操作,这是逻辑上的错误。因此,需要将按位与运算符(&)改为逻辑或运算符(||)。
让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!
