gpt4 book ai didi

c++ - 即使我涵盖了所有情况,也会收到 "control reaches end of non-void function"警告

转载 作者:太空狗 更新时间:2023-10-29 20:35:38 25 4
gpt4 key购买 nike

为什么如果我有两个条件,同时都在函数中返回正确的类型,我会收到警报。

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];
}

有什么方法可以纠正这样的告警?

最佳答案

即使控制永远达不到

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;
}

或者只是删除整个 else if 因为它要么是 true 要么是 false:

bool EtherTrafGen::isGenerator()
{
if (multipacket) return par("destAddresses").stringValue()[0];
return par("destAddress").stringValue()[0]; // multipacket must be false here anyway
}

关于c++ - 即使我涵盖了所有情况,也会收到 "control reaches end of non-void function"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41892864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com