This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: missing return statement


On Thu, Mar 12, 2009 at 4:56 PM, Robert Dewar <dewar@adacore.com> wrote:
> Nathan Ridge wrote:
>
>> Why does gcc not give an error about this?
>> If I compile with "-Wall", it will give a WARNING saying
>> "control reaches end of non-void function".
>> ?However, shouldn't it be an ERROR to return nothing
>> from a function that's supposed to return something?
>> Does this not result in undefined behaviour? Why goes gcc allow it?
>
> Because the standard does not make this an error, you can't tell
> if anyone needs a result, perhaps function is always called in
> a void environment.
>
> A warning is all you can get, always pay attention to warnings!

The standard does make it an error, in that if such a function
(meaning a function that unconditionally falls off the end, when
declared to return a value) is called _at all_ then undefined behavior
results.  More general cases can't be established at compile time, of
course.

To be conservative, a compiler would issue the error only at the call
site, with possibly a warning (as gcc does) for the definition.

-- James


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]