我在 SunOS 5.11 (Solaris 11.3) 上的 Sun Studio 12.3 下工作。它提供了一个虚假的警告:
“<file.h>”,第 1 行:警告:“<function>”应返回一个值。
该函数是基类接口的一部分,看起来像这样。我只提到基类接口以避免“你为什么要这样做”的讨论。像下面这样的非成员函数足以触发它。
int foo()
{
throw runtime_error("Not implemented");
}
我发现提到了类似的问题。例如,Xapian-core更改日志指出:
- 禁用 Sun 的 C++ 编译器发出的“预期返回值”警告
,因为它会触发以“throw”语句结尾的函数。真正
的实例将被具有高级警告机制的编译器捕获。
根据SunStudio C++ 编译器编译指示禁用警告,我可以使用-erroff=voidretw
. 我很担心,-erroff=voidretw
因为它可能会压制有效的发现。此外,如果我使用#pragma
,那么我需要推送并弹出它以避免交叉授粉到用户代码中。我不知道如何在 Sun Studio 下推送和弹出警告状态。
我的问题是,如何禁用 Sun Studio 下标题中的一个功能的警告?
即使消息不同,这看起来也像是重复的:如何使“最后一条语句应返回值”警告静音?我想我将投票决定将其作为副本关闭。