[Bug c/50330] New: Misleading error message with struct declaration
rui.maciel at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Sep 8 14:58:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50330
Bug #: 50330
Summary: Misleading error message with struct declaration
Classification: Unclassified
Product: gcc
Version: 4.5.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: rui.maciel@gmail.com
struct t {
int x;
}
int main(void)
{
return 0;
}
This code, compiled with gcc, produces the following error message:
<message>
rui@Kubuntu:tmp$ gcc main.c
main.c:5:1: error: two or more data types in declaration specifiers
main.c: In function ‘main’:
main.c:7:10: error: incompatible types when returning type ‘int’ but ‘struct t’
was expected
</message>
The same code, when compiled with g++, produces the following error message:
<message>
rui@Kubuntu:tmp$ g++ main.c
main.c:1:1: error: new types may not be defined in a return type
main.c:1:1: note: (perhaps a semicolon is missing after the definition of ‘t’)
main.c:5:14: error: two or more data types in declaration of ‘main’
</message>
gcc's error message is cryptic and doesn't help the user. g++'s error message,
on the other hand, although it is still cryptic it provides useful clues to the
user, which makes it considerably more helpful. Nonetheless, both error
messages are needlessly cryptic and could be considerable improved, so that the
user gets a much clearer idea on where the error lies.
As a comparison, here is clang's error message:
<message>
rui@Kubuntu:tmp$ clang main.c
main.c:3:2: error: expected ';' after struct
}
^
;
1 error generated.
</message>
This error message is clear, concise and to the point.
It would be great if GCC improved the error message for this scenario.
More information about the Gcc-bugs
mailing list