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.
next prev parent 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).