当函数在gcc中没有返回时如何强制执行错误?

Bar*_*kPL 8 c++ gcc compiler-errors compilation

当函数定义在其体内没有返回时,是否可以强制执行错误(打破构建)?

考虑这个功能:

int sum(int a, int b) {
  int c = a + b;
  // and here should be return
};
Run Code Online (Sandbox Code Playgroud)

当我编译时g++ -Wall,我得到:

return函数中没有语句返回non-void [ -Wreturn-type]

但我希望这是一个很难的错误,而不是一个警告.

我目前正在使用GCC 4.9.2,但是如果有不同版本的GCC的解决方案也会有所帮助.

Tob*_*ght 13

GCC可以选择-Werror将所有警告转换为错误.

如果你想升级只有特定的警告,你可以使用-Werror=X,在这里X是警告类型,没有-W前缀.在你的特定情况下,那将是-Werror=return-type.

请注意,这只会return在返回值的函数中报告缺失.如果你想强制执行return;必须在返回的函数中明确写入void,你可能会运气不好.