如何检测函数的无返回语句

时间:2011-02-09 04:10:24

标签: c++

我有一个返回非void的函数。在调用者方面,我想检测是否在原始函数中调用了return语句。

我知道,不允许非void函数返回任何内容,它会在gcc中抛出警告。但我想根据是否调用return或控件是否到达函数结束来打印运行时错误。

被叫方由用户定义。我只是提供声明。所以,基本上我想确保callee函数的实现者,不要跳过“return”语句。

3 个答案:

答案 0 :(得分:1)

您无法确定函数如何从调用者返回(除了它是抛出异常还是返回异常)。您唯一能做的就是阻止函数使用该编译器警告显式返回,或者在您不希望控制的函数末尾添加运行时错误调用。您可以做的一个技巧是让函数的返回类型具有默认构造函数,该构造函数会产生运行时错误;任何return语句都需要使用其他一些构造函数。但是,一旦你这样做,你可能只是在函数末尾添加一个错误调用或更改返回类型以获得GCC警告。

答案 1 :(得分:0)

听起来你真正想做的就是返回错误代码,或抛出异常

答案 2 :(得分:0)

如果具有非void返回类型的函数不是return,则行为未定义。

这意味着你无法在运行时检查那些真正应该是编译器错误的东西(C#编译器认为这是一个错误)。

如果您想知道您的函数是否到达结尾,请使其返回已知值或抛出异常。