自学内容网 自学内容网

C语言编译报错:error: expected declaration or statement at end of input(缺了括号)

报错信息

在这里插入图片描述

/userdata/testOtherPrj/20240715_box_circuit_breaker/test/external/modbus_vendorA/src/vendor_a_modbus.c: In function ‘VendorA_PowerStop’:
/userdata/testOtherPrj/20240715_box_circuit_breaker/test/external/modbus_vendorA/src/vendor_a_modbus.c:6:5: error: expected declaration or statement at end of input
    6 |     return MODBUS_PowerStop(serial, errorMsg);
      |     ^~~~~~
make[2]: *** [CMakeFiles/ModbusExecutable.dir/build.make:89: CMakeFiles/ModbusExecutable.dir/external/modbus_vendorA/src/vendor_a_modbus.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:76: CMakeFiles/ModbusExecutable.dir/all] Error 2
make: *** [Makefile:84: all] Error 2
Build failed

分析

这个错误信息是来自编译过程中的一个问题,具体来自 vendor_a_modbus.c 文件的 VendorA_PowerStop 函数。编译器提示“expected declaration or statement at end of input”,这通常意味着编译器在文件的末尾遇到了一些意外的内容,或者是在某个地方缺少了必要的代码元素(如闭合的括号、分号等)。

根据错误信息的上下文,问题似乎出现在以下这行代码:

return MODBUS_PowerStop(serial, errorMsg);

这通常发生在以下几种情况:

  1. 缺少闭合的大括号:可能在函数或某个控制结构(如 if, while, for 等)中丢失了一个闭合的大括号 }。这是最常见的原因之一。

  2. 语法错误:函数体中可能有语法错误,例如未正确使用分号或其他必需的语法元素。

  3. 文件损坏或不完整:源文件可能在末尾被截断或损坏,导致编译器无法正确解析到文件末尾。

解决步骤:

  1. 检查大括号:确保所有的函数、条件语句、循环等都正确闭合了它们的大括号。特别是检查 VendorA_PowerStop 函数的开始和结束,确保它们匹配并完整。

  2. 检查语法:仔细检查涉及的代码行和周围的代码,看看是否有明显的语法错误。

  3. 查看文件完整性:检查文件是否完整,确保没有提前的文件结束。

  4. 编译器消息:如果可能,查看更详细的编译器输出或错误日志,这可能会提供更多线索。

根据你的描述,首先应该检查 VendorA_PowerStop 函数在文件中的代码,确保所有逻辑都被正确的大括号包围,例如:

int VendorA_PowerStop(serial_t *serial, char **errorMsg) {
    // Your code here
    return MODBUS_PowerStop(serial, errorMsg);
}

确保函数从开始到结束的所有代码块都是完整和正确的。

排查

果然是代码这里缺了哥括号:

在这里插入图片描述

修改后:

在这里插入图片描述

可以编译了:

在这里插入图片描述


原文地址:https://blog.csdn.net/Dontla/article/details/140489207

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!