[PATCH] Emit warning for function declaration with qualified void return type
Joseph S. Myers
joseph@codesourcery.com
Tue Jan 4 19:51:00 GMT 2005
On Tue, 4 Jan 2005, Devang Patel wrote:
> This patch enables pedantic warning, in c99 mode, for function declarations
> that has qualified void return type. GCC already emits warning for function
> definitions.
My understanding of the standard is that the constraint in 6.9.1#3 is only
for function definitions, not for function declarations and certainly not
for arbitrary function type declarators. For function type declarators
the constraints are the weaker ones in 6.7.5.3#1. Things are a bit less
clear about declarations of functions which are not definitions, but my
view is that the correct interpretation is that the constraint in the
subclause "Function definitions" should only apply to such definitions.
I haven't yet put this in my list of pre-DRs, but I discussed it with
Derek Jones last month and he agreed with my interpretation.
Interpreting it otherwise would also forbid
struct s;
struct s f();
// struct s gets defined later before f is defined or called.
which is a natural reason for the constraints on function declarators to
be weaker than those on definitions.
Please note also:
* The same constraint is in C90 6.7.1; there should not be a C99
conditional here.
* The examples in DR#113 (supposing you came across this issue as a
failure in a testsuite referencing that DR) only involve function
definitions; the question of other declarations was not raised there.
> This is a regression from earlier GCC.
This is a deliberate change from earlier GCC.
--
Joseph S. Myers http://www.srcf.ucam.org/~jsm28/gcc/
jsm@polyomino.org.uk (personal mail)
joseph@codesourcery.com (CodeSourcery mail)
jsm28@gcc.gnu.org (Bugzilla assignments and CCs)
More information about the Gcc-patches
mailing list