c – 即使我已经涵盖了所有案例,也要“控制到达无效功能的结束”警告

weixin_38050892 2019-09-12 12:21:24
为什么如果我有两个条件,而两者都在函数中返回正确的类型,我会收到警报. control reaches end of non-void function [-Wreturn-type] bool EtherTrafGen::isGenerator() { if (multipacket) return par("destAddresses").stringValue()[0]; else if (!multipacket) return par("destAddress").stringValue()[0]; } 纠正这种警报的方法是什么?
...全文
24 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38056808 2019-09-12
  • 打赏
  • 举报
回复
即使控制永远无法达到 bool EtherTrafGen::isGenerator() { if (multipacket) return par("destAddresses").stringValue()[0]; else if (!multipacket) return par("destAddress").stringValue()[0]; //here } 编译器不能知道(因为它是一个else if)并且它会警告你潜在的未定义行为(如果到达)(也许另一个线程在第一次检查后修改multipacket等).您只需添加默认返回值即可满足编译器: bool EtherTrafGen::isGenerator() { if (multipacket) return par("destAddresses").stringValue()[0]; else if (!multipacket) return par("destAddress").stringValue()[0]; return false; } 或者只是切断整个其他,如果因为它是真或假: bool EtherTrafGen::isGenerator() { if (multipacket) return par("destAddresses").stringValue()[0]; return par("destAddress").stringValue()[0]; // multipacket must be false here anyway }

474

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧