Search code examples
c++gcccompiler-errorscompilation

How can I enforce an error when a function doesn't have any return in GCC?


Is it possible to enforce an error (to break the build) when a function definition has no return in its body?

Consider this function:

int sum(int a, int b) {
  int c = a + b;
  // And here should be return
};

When I compile with g++ -Wall, I get:

no return statement in function returning non-void [-Wreturn-type]

But I want this to be a hard error rather than a warning.

I'm currently using GCC 4.9.2, but if there's a solution for different version of GCC that would be helpful to know, too.


Solution

  • GCC has the option -Werror to turn all warnings into errors.

    If you want to upgrade only a specific warning, you can use -Werror=X, where X is the warning type, without the -W prefix. In your particular case, that would be -Werror=return-type.

    Note that this will only report a missing return in a function that returns a value. If you want to enforce that return; must be explicitly written in a function returning void, you may be out of luck.