[Bug c/19694] New: Warning about mismatched function declaration is now error
eliz at gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Jan 29 16:18:00 GMT 2005
Consider the following source file:
static int
foo (arg1, arg2)
void *arg1, *arg2;
{
bar (arg1, arg2);
return 0;
}
void
bar (arg1, arg2)
void *arg1, *arg2;
{
callme (arg1, arg2);
}
If I compile it with GCC 3.3.3 or earlier, I get a warning:
tfwd.c:11: warning: type mismatch with previous implicit declaration
tfwd.c:5: warning: previous implicit declaration of `bar'
tfwd.c:11: warning: `bar' was previously implicitly declared to return `int'
But if I compile with 3.4.3, I get an error:
tfwd.c:11: error: conflicting types for 'bar'
tfwd.c:5: error: previous implicit declaration of 'bar' was here
I think this is a bug: GCC should not emit diagnostics for this code, certainly
not flag it as an error, except perhaps under -ansi -pedantic. There's nothing
wrong with having a function defined after it is used; GCC should not force me
write bottom-up code, nor add gratuitous prototypes for functions defined in
the same source file where they are used.
--
Summary: Warning about mismatched function declaration is now
error
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: eliz at gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i386-msdos-djgpp
GCC host triplet: i386-msdos-djgpp
GCC target triplet: i386-msdos-djgpp
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19694
More information about the Gcc-bugs
mailing list