I just had some weird behavior from a version of g++ for Windows that I got with Strawberry Perl. It allowed me to omit a return statement.
I have a member function that returns a structure consisting of two pointers, called a boundTag
:
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
This function gave me some bad output, and I discovered that it had no return statement. I had meant to return retBoundTag
but forgot to actually write the return statement. Once I added return retBoundTag;
everything was fine.
But I had tested this function and gotten correct boundTag
output from it. Even now, when I remove the return statement, g++ compiles it without warning. WTF? Does it guess to return retBoundTag
?
-Wall
. Missing return statements are caught by-Wreturn-type
. – Hobbyhorse-Werror=return-type
. Saved me a lot of time. – Photic