silencing warning "control reaches end of non-void function"
Lionel Elie Mamane
lionel at mamane.lu
Sun Jul 30 17:26:02 UTC 2017
Hi,
Consider:
enum t {a, b};
OUString f(t i)
{
switch(i)
{
case t::a;
return "it was an a";
case t::b;
return "it was a b";
}
}
gcc -Werror fails with
error: control reaches end of non-void function [-Werror=return-type]
But that is not true; since all possible values are treated and
return, it cannot fall through. How do I silence that spurious
warning-turned-error?
I tried adding "assert(false)", which solves the warning on my
machine, but not on Jenkins build linux_gcc_release_64, cf
https://ci.libreoffice.org/job/lo_gerrit/15859/Config=linux_gcc_release_64/
I don't want to add a fake
return "never reached";
because I want compilation to fail if/when the switch is not
exhaustive (e.g. change of definition of enum t).
The "f" above is FilterManager::getFilterComponent in file
connectivity/source/commontools/filtermanager.cxx of
https://gerrit.libreoffice.org/40567
Thanks for you advice,
Lionel
More information about the LibreOffice
mailing list