【发布时间】:2013-10-15 13:19:58
【问题描述】:
目标
我有一个全局 TX 数组,以及一个必须通过该数组进行的 CRC 函数。 CRC 函数不应处理第一个字节。为了避免这种情况,我试图通过执行 TX++ 来增加数组。这会导致问题。
问题
请快速查看以下代码:
void Send_To_Manager(void)
{
TX[0] = 0x55;
TX[1] = 0x00;
TX[2] = 0x01;
TX[3] = 0x00;
TX[4] = COMMON_COMMAND;
TX++;
TX[5] = CRC8(TX,4);
TX[6] = CO_RD_VERSION;
TX += 5;
TX[7] = CRC8(TX,1);
TX -= 6;
UART_TX(8);
}
我想屏蔽 TX 数组中第一个字节的 CRC8 函数。通过执行 TX++,我期望 TX[0] 为 0x00。但是我得到了错误:
错误:递增的类型参数错误
我也收到了 TX += 5 的错误;和 TX -= 6 为:
错误:赋值中的类型不兼容
我玩过这个,所以如果函数有一个数组,例如:
void Send_To_Manager(unsigned char data[100])
{
data++;
}
上述工作按预期工作。
问题
- 为什么我可以为基于函数的数组而不是全局数组执行此操作?
- 如果我确实希望对全局数组执行此操作,我该怎么做?
- 您希望如何实现上述目标?
感谢大家的宝贵时间。
【问题讨论】: