虚假"<function> is expected to return a value"警告?
Spurious "<function> is expected to return a value" warning?
我在SunOS 5.11(Solaris 11.3)上的Sun Studio 12.3下工作。它提供了一个虚假的警告:
"<file.h>",第1行:警告:"<function>"应返回一个值。
函数是基类接口的一部分,看起来是这样的。我只提到基类接口是为了避免"为什么要这么做"的讨论。像下面这样的非成员函数就足以触发它
int foo()
{
throw runtime_error("Not implemented");
}
我发现有人提到过类似的问题。例如,Xapian核心更改日志状态为:
- Disable"预期会返回值"警告来自Sun的C++
编译器,因为它会为以"throw"语句结尾的函数触发。真正的
实例将被具有高级警告机制的编译器捕获
根据SunStudio C++编译器杂注禁用警告,我可以使用-erroff=voidretw
。我担心-erroff=voidretw
,因为它可能会抑制有效的发现。此外,如果我使用#pragma
,那么我需要推送和弹出它,以避免交叉授粉到用户代码中。我不知道如何在Sun Studio下推送和弹出警告状态。
我的问题是,如何禁用Sun Studio标题中的一个函数的警告?
尽管消息不同,但这看起来像是重复的:如何使"最后一条语句应返回值"警告静音?我想我会投票把它作为复制品结束。
如果您的编译器支持C++11,您可以用noreturn属性装饰该函数:
[[noreturn]] int foo()
{
throw runtime_error("Not implemented");
}
Sun Studio允许用标记这类函数
#pragma does_not_return(foo)
怎么样?
int foo()
{
return throw runtime_error("Not implemented"), 0;
}
你收到警告了吗?
相关文章:
- 方法错误"not all control paths return a value"和方法不返回值
- 如何解决类成员函数中的"return a value"错误?
- QThread start() return value
- 警告:"Not all control paths return a value" c++
- What value should `std::stringstream::fail()` return after r
- Return value of std::hash ofr (x86/x64)
- 在这个程序中"getavg must return value"意味着什么?
- OpenCV HOGDescriptor return value
- 虚假"<function> is expected to return a value"警告?
- Opencv cv::waitKey() return value
- 我返回一个值,但编译器告诉我"function must return a value"
- const object&return value from a method, best practice
- 循环函数给出"return’ with a value, in function returning void"误差
- Return-value C++
- 计算距离:方法"must return a value" ?
- c++ rapidjson return value
- CAsyncSocket receive() return value
- boost program_options add_options return value
- 如何在java中执行"an exe with return value"?
- return value-C++:由私有方法返回的本地typedef