如何使Qt Creator在无返回语句中显示错误

时间:2011-08-07 17:46:05

标签: c++ qt-creator gnu

事实证明,如果你在非空函数中没有return语句,g ++编译器(默认情况下在Qt Creator中使用)只会发出警告,即:

int* create_array(int n)
{
    int* a = new int[n];
}

编译好。

这种行为受到g ++本身的无数错误报告的影响,但看起来开发人员认为这种行为符合C ++标准(这是有争议的,因为这部分有点令人困惑),如http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43943所述:< / p>

Flowing off the end of a function is equivalent to a return with no value; 
this results in undefined behavior in a value-returning function.

然而,同一段开头是:

  A return statement without an expression can be used only in functions 
  that do not return a value, that is, a function with the return type void,
  a constructor (12.1), or a destructor (12.4).

除了标准解释上的这些(非)圣战之外,有没有选项让Qt在编译时将其标记为错误?

2 个答案:

答案 0 :(得分:1)

这与Qt无关,而与g ++有关。

在构建选项中,只需添加标志-Werror,g ++会将任何警告视为错误。您可能还需要使用标志-Wall来使g ++生成其他警告,因为默认情况下它不会为缺少的返回语句(以及许多其他情况)生成警告。然而,没有办法在每个警告的基础上调整此设置,因此无论是一切还是全无。

答案 1 :(得分:1)

您可以使用-Werror=warning_name语法将特定警告视为错误。对于您的情况,您可以使用-Werror=return-type(其中return-type是“控制到达非空函数结束”警告的名称)。根据{{​​3}}。