https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63591

Manuel López-Ibáñez <manu at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |diagnostic
            Summary|No syntax error yielded for |be more strict when
                   |semicolons inside a         |accepting parameter forward
                   |function proto, instead     |declarations
                   |code with memory corruption |
                   |can be created              |

--- Comment #6 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Kjetil Matheussen from comment #3)
> I didn't know about this gnu extension. But regardless, shouldn't gcc
> complain when the proto doesn't match the function itself?

Unfortunately, there is [*] too much old code that would break if we did so.
But you can use -Wstrict-prototypes.

[*] or there was, perhaps we should revisit adding -Wstrict-prototypes to
-Wall. But to do that we need someone that will propose such a patch, fix any
failing testcases in the testsuite and convince the maintainers.

> Also, although I don't understand how this extension works from the
> documentation, I have a feeling that there should have been a warning or
> error when compiling code calling "afunction" as well?
> 
> int main(){
>   return afunction(5, NULL);
> }
> 
> (this compiles just fine)

This is because int foo(); is not a prototype (you can call it with foo(5,5)).
You need -Wstrict-prototypes.

Reply via email to