好吧,这可能是在黑暗中拍摄。
我正在编写一个软件工具来测试使用 USB 数据传输的应用程序的一些代码。我无法在线发布代码,也无法详细说明代码的作用,但我可以发布引发此奇怪错误的循环。
当我试图编译这个循环所在的源文件时,我得到了一些语法错误(你可以看到不适用)和这个错误error C2181: illegal else without matching if
(你也可以看到不适用)。我知道这段代码在它的正常操作环境中工作,但我确实需要测试它是否存在任何可能的漏洞。有没有人有任何想法?
这里特别是循环。它处理确定从 USB 接收到的消息是否完整:
void _usb_rx_complete(_message_union_t *buf_ptr)
{
if(buf_ptr == &s_msg_buf[0].buffer)
{
s_msg_buf[0].is_complete = 0;
s_msg_buf[0].byte_index = 0;
}
else if(buf_ptr == &s_msg_buf[1].buffer)
{
s_msg_buf[1].is_complete = 0;
s_msg_buf[1].byte_index = 0;
}
}
通常这是由 if 语句后的分号引起的,但我在那里很干净。此外,如果我注释掉这个循环,我不会收到上述任何错误,所以我认为这不是程序其他部分的问题。语法错误在 iferror C2059: syntax error : '=='
和error C2143: syntax error : missing ';' before '{'
else 段内...有什么想法吗?
谢谢