我想让某些函数调用的编译失败,但其他的不行。我想要失败的函数调用是那些在值属于某种类型时不处理返回值的函数调用。在下面的示例中,不处理返回的函数Error
是编译错误,但不处理返回任何其他内容的函数应该会成功。
注意:我们的运行时环境(嵌入式)不允许我们使用以下构造:RTTI、异常。
这段代码只需要用 Clang 编译,我宁愿不必注释每个函数。
我们更喜欢在编译时而不是在运行时失败的解决方案。
enum class Error {
INVAL,
NOERR,
};
// do something that can fail.
Error DoThing();
// may return different return codes, we never care (we can't change prototype)
int DoIgnoredThing();
int main() {
DoThing(); // compilation failure here, unused "Error" result
DoIgnoredThing(); // compilation succeeds, OK to ignore unused "int" result
return 0;
}