The attached testcase just produces warning or errors (depending on gcc
version) for func1, func3 and func5:
testwarning.c:5: error: static declaration of func1 follows non-static
declaration
testwarning.c:3: error: previous declaration of func1 was here
testwarning.c:25: error: static declaration of func3 follows non-static
declaration
testwarning.c:23: error: previous declaration of func3 was here
testwarning.c:46: error: static declaration of func5 follows non-static
declaration
testwarning.c:43: error: previous declaration of func5 was here
I'm not sure about any C standard implications here, but now that 'static
follows non-static' is an error in newer gcc, I believe the other way round
deserves at least a warning to. Noticed this while compiling source code with
HP's A.10.32.03 compiler, which warns about all 6 functions on the testcase
like this:
cc: "testwarning.c", line 53: warning 562: Redeclaration of "func6" with a
different storage class specifier: "func6" will have internal linkage.
Hope this helps,
Franz
--
Summary: Inconsistent warning/error with static and non-static
declarations
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sirl at gcc dot gnu dot org
GCC build triplet: i586-suse-linux
GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32692