c如果没有匹配则非法

时间:2013-07-31 20:02:29

标签: c++ if-statement syntax

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

我正在编写一个软件工具来测试使用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语句后的冒号引起的,但我在那里很干净。另外,如果我注释掉这个循环,我没有得到任何上述错误,所以我不认为这是该程序的另一部分的问题。 if和else段中的语法错误为error C2059: syntax error : '=='error C2143: syntax error : missing ';' before '{' ......有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

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

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

如果这对查找问题没有帮助,this page会告诉您如何在Visual Studio中启用预处理器输出到文件,检查几乎总能帮助找到问题的输出。