18

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.

3
  • You can turn warnings into errors with -Werror Commented Mar 13, 2017 at 9:29
  • Ok, but I want treat this one as error, another warning may be ignored.
    – BartekPL
    Commented Mar 13, 2017 at 9:30
  • 7
    -Werror=return-type
    – mpiatek
    Commented Mar 13, 2017 at 9:34

1 Answer 1

27

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.

0

Not the answer you're looking for? Browse other questions tagged or ask your own question.