错误: 在有返回值的函数中,控制流程到达函数尾 [-Werror=return-type] 36 | Result triggerbase; | ^~~~~~~~~~~ cc1plus:有些警告被当作是错误
时间: 2024-11-13 17:17:59 浏览: 8
linux安装nginx遇到的连环坑
这个错误提示意味着在C++中,你有一个声明为具有返回值的函数,但是在函数体的结尾处并没有明确地返回一个值。当你使用`-Werror=return-type`编译选项时,GCC(或其他C++编译器)将这类未显式返回的情况视为严重的错误,而不是通常的警告。
具体到这段代码,`Result triggerbase;` 可能是一个意图返回`Result`类型的结果变量,但是函数没有明确地通过`return`语句返回这个结果给调用者。解决这个问题的方法是,在函数尾部添加`return triggerbase;`,这样就明确告诉编译器你要返回什么。
示例修复后的代码可能如下所示:
```cpp
Result Subscriber::AddSubscriber(const TriggerType &trigger_type, TriggerIvsFunc &on_message) {
if (trigger_type != en_ALG_PLATE_VIRTUALLOOP) {
return VZERROR_NEWF("trigger_type:%d != en_ALG_PLATE_VIRTUALLOOP:%d", trigger_type, en_ALG_PLATE_VIRTUALLOOP);
}
ivs_consumers_[trigger_type].push_back(on_message);
// 添加 return 语句
return triggerbase;
}
```
阅读全文