public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Brown <david.brown@hesbynett.no>
To: Basile Starynkevitch <basile@starynkevitch.net>, gcc@gcc.gnu.org
Cc: Joel Sherrill <joel@rtems.org>
Subject: Re: Warning for C Parameter Name Mismatch
Date: Sun, 10 Mar 2019 11:54:00 -0000	[thread overview]
Message-ID: <7fdc8d4f-6c32-5354-936a-be53e1dac521@hesbynett.no> (raw)
In-Reply-To: <f8c66f7b-2c8d-29c5-16d1-9f2900864b98@starynkevitch.net>

On 10/03/2019 07:11, Basile Starynkevitch wrote:
> 
> (I am reading the GCC mailing list in digest mode)
> 
> On 3/9/19 10:58 PM, gcc-digest-help@gcc.gnu.org wrote:
> 
>>
>> On Fri, 8 Mar 2019, Joel Sherrill wrote:
>>
>>> Can gcc report when the parameter name in a C prototype
>>> does not match that used in the implementation?
>>>
>>> int f(int x);
>>>
>>> int f(int y) {...}
>> I think this would be normal and expected - an installed header would use
>> a reserved-namespace name for the parameter while the implementation uses
>> a non-reserved name that's more convenient for use within the
>> implementation.  (Thus anything like this would only be useful if it can
>> know that it's e.g. OK to have __y and y as the names, and some code no
>> doubt uses other such conventions relating the two names.)
>> I can appreciate that a warning like this is not for everyone.  But 
>> /I/ would like and use such a warning for my own code. 
> May I remind to all that this is a typical case for you writing a GCC 
> plugin. You want a warning that few other people want, and that warning 
> is tied to your particular coding style.
> 
> You could avoid that warning by avoid naming the parameters in your 
> header files, so you would declare
> int f (int /*x*/); in your header file.
> 
> You might want to get a warning, but since it is not of general use (as 
> many explained, not using the same name in the header and in the 
> implementation of a given function parameter makes a lot of sense in 
> general, even if you dislike such as style) you really should consider 
> writing your own GCC plugin for that purpose.
> 
> How to write such a GCC plugin is a different question, and should be 
> asked as such.
> 
> Cheers.
> 

I fully agree that this is not a warning everyone will want - but I 
disagree with the idea that it is a specialist or unusual warning. 
Remember, no one is asking for it to be in -Wall or -Wextra.  gcc has 
many, many warnings available, and a large proportion of them will only 
be useful to a small proportion of users.  You could certainly say that 
of things like "-Wmissing-prototypes", "-Wmissing-declarations" and 
"-Wredundant-decls".  I fail to see that this suggestion is at all 
different.

In particular, I see this warning being of little use for large C / C++ 
applications with code split into multiple libraries.  But I see it as 
being of a good deal of use in small-systems embedded programming where 
you have a smaller code base, all compiled together in one project, and 
where coding conventions and styles are often strict.  That will apply 
to only a very small proportion of people programming for x86-64 targets 
- but a very high proportion of those programming for AVR, msp430, ARM 
Cortex-M, and most of the other targets of gcc.  It is easy to forget or 
underestimate the huge range of types of programming done with gcc - 
there are many of us for whom warnings like this would be a useful tool.

However, you are right that plugins could be a way to achieve this.  I 
think the Python plugin could be a good way to prototype features like 
this - and if it is useful, then it could be moved into gcc main.

  reply	other threads:[~2019-03-10 11:54 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1552168709.15796.ezmlm@gcc.gnu.org>
2019-03-10  6:11 ` Basile Starynkevitch
2019-03-10 11:54   ` David Brown [this message]
2019-03-10 12:05     ` Basile Starynkevitch
2019-03-08 22:25 Joel Sherrill
2019-03-08 23:06 ` Joseph Myers
2019-03-08 23:36   ` David Brown
2019-03-09  2:23     ` Eric Gallager
2019-03-09  8:30       ` Jonathan Wakely
2019-03-09 17:27         ` Segher Boessenkool
2019-03-09 17:51           ` Joel Sherrill
2019-03-11 11:35             ` Jonathan Wakely
2019-03-11 11:26           ` Jonathan Wakely
2019-03-09 12:22       ` David Brown
2019-03-28  6:07 ` Eric Gallager

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7fdc8d4f-6c32-5354-936a-be53e1dac521@hesbynett.no \
    --to=david.brown@hesbynett.no \
    --cc=basile@starynkevitch.net \
    --cc=gcc@gcc.gnu.org \
    --cc=joel@rtems.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).