0

好吧,这可能是在黑暗中拍摄。

我正在编写一个软件工具来测试使用 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 段内...有什么想法吗?

谢谢

4

1 回答 1

2

您的代码没有明显的语法错误,但编译器仍然给出语法错误作为输出,这通常指向与预处理器相关的问题。由于发布您的整个源代码显然是一个问题,这里有一些如何定位它们的指针;

首先,检查#define文件中定义的任何或宏,或您知道是宏的失败表达式中的符号。

如果这无助于查找问题,此页面将告诉您如何启用预处理器输出到 Visual Studio 中的文件,检查几乎总是有助于查找问题的输出。

于 2013-07-31T20:28:42.293 回答