This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/31977] New: can return OK from "int main()" without a return statement by using a goto before the return
- From: "bmcfadden at cdp dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 17 May 2007 15:46:18 -0000
- Subject: [Bug c/31977] New: can return OK from "int main()" without a return statement by using a goto before the return
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
I'm using gcc 3.4.5, and I was looking into a weird condition. The following
program compiles OK:
#include <stdio.h>
int alloc()
{
return 0;
}
int main(int argc, char* argv[])
{
printf("Testing!\n");
if(alloc() == 0)goto Radhe;
return 0;
Radhe:
printf("Hello\n");
}
The result is a program which prints "Testing", then "Hello", and then exits.
I and a few other people expect that the compiler would generate an error
during compile, because main should return an int, and not all code paths have
a return statement; however, both gcc and msvc are compiling this OK.
added note: this bug was recently discussed on the NTDEV mailing list.
--
Summary: can return OK from "int main()" without a return
statement by using a goto before the return
Product: gcc
Version: 3.4.5
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bmcfadden at cdp dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31977