如何解决如何在C中为指针添加偏移量?
我正在修改微控制器的固件。 我有两个 RxBuffers,我打算添加第三个,所以我打算使用相同的例程来解析它们。问题是其中一个与其他的偏移量不同。 示例:
RxBuffer1="#DATA,1,5,8"
RxBuffer2="DATA,8" //<-Different offset
RxBuffer3="#DATA,8"
void ParseData(char *xBuffer)
{
//Parse data starting at xBuffer +1
}
创建 ParseData
例程是为了解析 RxBuffer1
格式而不是 RxBuffer2
格式的数据。
在此级别未以任何方式使用 #
。
我应该如何传递地址以使ParseData
正确获取RxBuffer2
的地址?
我认为应该是RxBuffer2-1
。也许ParseData(RxBuffer2-1)
?
解决方法
传递 RxBuffer2 - 1
是未定义的行为。相反,您应该创建一个需要 RxBuffer2
格式的函数,并且可能重构旧函数以使用这个新函数:
void ParseActualData(char *xBuffer)
{
// expects `DATA`
}
void ParseData(char *xBuffer)
{
// expects `#DATA`
ParseActualData(xBuffer + 1);
}
或者,如果解析逻辑允许,您可以让 ParseData
接受两种变体并根据第一个字符确定要执行的操作(例如,如果第一个字符是 #
,则跳过它)。>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。