Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #43128

Re: Table of "safe" methods to suppress "unused parameter" warnings?

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.lang.c
Subject Re: Table of "safe" methods to suppress "unused parameter" warnings?
Date 2014-04-19 17:52 +0200
Organization A noiseless patient Spider
Message-ID <liu64e$hba$1@dont-email.me> (permalink)
References <lgv0nu$8g1$1@dont-email.me> <kfnmwg8ilj0.fsf@x-alumni2.alumni.caltech.edu> <lhbjd8$gi1$1@dont-email.me> <kfnvbu6buv8.fsf@x-alumni2.alumni.caltech.edu>

Show all headers | View raw


On 18/04/14 16:00, Tim Rentsch wrote:
> David Brown <david.brown@hesbynett.no> writes:
>
>> On 30/03/14 01:21, Tim Rentsch wrote:
>>> mathog <dmathog@gmail.com> writes:
>>>
>>>> Sometimes the same parameter list must be passed to a lot of
>>>> different functions, and some of those will not use all of the
>>>> parameters, resulting in some compilers emitting "unused
>>>> parameter" warnings.  Here are all of the methods I have found
>>>> so far for suppressing these [snipping the first kind;  the
>>>> second kind] of UNUSED's is more general and it is applied
>>>> within the function like:
>>>>
>>>>     int function (x){
>>>>        UNUSED(x);
>>>>
>>>> #define UNUSED(x) ((void)x)
>>>> #define UNUSED(x) x=x
>>>> #define UNUSED(x) ( *(volatile typeof(x) *)&(x) = (x); )
>>>> #define UNUSED(x) if(x);
>>>>
>>>> Unfortunately the members of the second set tend to convert the
>>>> "unused parameter" message into some variant of a "this line
>>>> does nothing" message on other compilers.  For instance, that is
>>>> what the "x=x" form, which works with gcc does when clang sees
>>>> it.  [snip]
>>>
>>> I suggest trying this form:
>>>
>>>      #define UNUSED(x)  ( (void) (0 ? 0 : &(x)) )
>>>
>>> or perhaps this alternate definition:
>>>
>>>      #define UNUSED(x)  ( (void) (0 ? &(x) : &(x)) )
>>>
>>> I'm interested to hear what you results you get if you
>>> try these with different compilers.
>>
>> Such code may be inefficient on some compilers (and with some
>> options) - if "x" has been passed in a register, the compiler may
>> copy it onto the stack in order for it to have an address, even
>> though the address is not used.
>
> Concern for such systems is not on my radar, and I would
> recommend to other people it not be on their radar either.  Any
> developer using such a lame compiler who isn't motivated enough
> or competent enough to discover even one of the obvious ways
> around the problem deserves to get bad results.  We're talking
> about compiler technology that is nearly 50 years old, and
> originally implemented in machines with 256 K of RAM, including
> the OS, and no virtual memory.  Bad tools should be gotten rid
> of, not catered to.

Perhaps that is the case in your little corner of the C programming 
world.  But there are plenty of microcontrollers around where the choice 
of tools is limited, and where compilers are often quite poor (or where 
good quality compilers are extremely expensive), and where a pointless 
waste of cycles and code space is something to be avoided.

I would say that if you are often worrying about small performance 
issues, then you should probably change toolchains and/or processor. 
Mostly you should be concentrating on writing good C code, and let the 
compiler turn it into efficient object code.  But there is no reason for 
making something as simple as a "unused parameter" marker into a waste 
of time and space.

>
>> I have yet to see any reason to why anyone would need something
>> other than "(void) x;" as a way to say "do nothing with x".
>> [snip]
>
> Then apparently you haven't been paying attention, since one was
> given in the first message of the thread, and quoted both in my
> reply and your response to it (and shown again above).
>

Actually, I /have/ been paying attention - and I have seen (and 
re-quoted) the vague and so far unjustified concern that "(void) x" 
/might/ not be enough to suppress "unused parameter" warnings, or 
/might/ trigger other warnings.  Despite the length of this thread, 
there have been no concrete examples.  So until someone can show a 
definite case where the compiler gives an unused parameter warning on x, 
gives the same (or another warning) on "(void) x", and gives no warning 
and no extra code on some weird do-nothing-in-a-complex-way statement, 
then I will continue to recommend "(void) x" as the general solution to 
this problem.

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Table of "safe" methods to suppress "unused parameter" warnings? mathog <dmathog@gmail.com> - 2014-03-26 09:54 -0700
  Re: Table of "safe" methods to suppress "unused parameter" warnings? Barry Schwarz <schwarzb@dqel.com> - 2014-03-26 10:55 -0700
    Re: Table of "safe" methods to suppress "unused parameter" warnings? Keith Thompson <kst-u@mib.org> - 2014-03-26 11:13 -0700
    Re: Table of "safe" methods to suppress "unused parameter" warnings? Javier Lopez <j.lopezg@aol.com> - 2014-03-26 19:45 +0100
      Re: Table of "safe" methods to suppress "unused parameter" warnings? Kaz Kylheku <kaz@kylheku.com> - 2014-03-26 19:55 +0000
  Re: Table of "safe" methods to suppress "unused parameter" warnings? mathog <dmathog@gmail.com> - 2014-03-26 17:01 -0700
    Re: Table of "safe" methods to suppress "unused parameter" warnings? Javier Lopez <j.lopezg@aol.com> - 2014-03-27 01:46 +0100
      Re: Table of "safe" methods to suppress "unused parameter" warnings? Thomas Jahns <jahns@idontlikespam.dkrz.de> - 2014-03-27 09:34 +0100
        Re: Table of "safe" methods to suppress "unused parameter" warnings? gazelle@shell.xmission.com (Kenny McCormack) - 2014-03-27 10:52 +0000
        Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-27 13:10 +0100
  Re: Table of "safe" methods to suppress "unused parameter" warnings? Ian Collins <ian-news@hotmail.com> - 2014-03-27 21:50 +1300
    Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 17:32 -0700
      Re: Table of "safe" methods to suppress "unused parameter" warnings? Ian Collins <ian-news@hotmail.com> - 2014-03-31 09:31 +1300
        Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-31 11:31 +0200
          Re: Table of "safe" methods to suppress "unused parameter" warnings? Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2014-03-31 12:04 +0200
            Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-31 13:55 +0200
              Re: Table of "safe" methods to suppress "unused parameter" warnings? Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-04-01 02:04 +0300
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Kaz Kylheku <kaz@kylheku.com> - 2014-03-31 23:37 +0000
                Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-04-01 10:16 +0200
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-05-22 13:10 +0300
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Kaz Kylheku <kaz@kylheku.com> - 2014-05-22 12:05 +0000
                Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-04-01 09:59 +0200
          Re: Table of "safe" methods to suppress "unused parameter" warnings? Ian Collins <ian-news@hotmail.com> - 2014-03-31 23:17 +1300
            Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-31 14:05 +0200
          Re: Table of "safe" methods to suppress "unused parameter" warnings? Kaz Kylheku <kaz@kylheku.com> - 2014-03-31 15:24 +0000
        Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-15 04:26 -0700
          Re: Table of "safe" methods to suppress "unused parameter" warnings? Öö Tiib <ootiib@hot.ee> - 2014-04-23 07:31 -0700
            Re: Table of "safe" methods to suppress "unused parameter" warnings? Keith Thompson <kst-u@mib.org> - 2014-04-23 08:45 -0700
  Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-03-29 17:21 -0700
    Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-31 13:26 +0200
      Re: Table of "safe" methods to suppress "unused parameter" warnings? James Kuyper <jameskuyper@verizon.net> - 2014-03-31 07:37 -0400
        Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-03-31 14:12 +0200
      Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-18 07:00 -0700
        Re: Table of "safe" methods to suppress "unused parameter" warnings? gazelle@shell.xmission.com (Kenny McCormack) - 2014-04-18 15:02 +0000
        Re: Table of "safe" methods to suppress "unused parameter" warnings? Keith Thompson <kst-u@mib.org> - 2014-04-18 08:58 -0700
          Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-04-27 08:11 -0700
            Re: Table of "safe" methods to suppress "unused parameter" warnings? gazelle@shell.xmission.com (Kenny McCormack) - 2014-04-27 15:26 +0000
              Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-06-10 08:30 -0700
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-06-11 00:57 +0300
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Ike Naar <ike@iceland.freeshell.org> - 2014-06-10 22:12 +0000
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Phil Carmody <thefatphil_demunged@yahoo.co.uk> - 2014-06-11 20:25 +0300
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Martin Shobe <martin.shobe@yahoo.com> - 2014-06-10 18:59 -0500
                Re: Table of "safe" methods to suppress "unused parameter" warnings? Tim Rentsch <txr@alumni.caltech.edu> - 2014-06-11 21:22 -0700
            Re: Table of "safe" methods to suppress "unused parameter" warnings? Kaz Kylheku <kaz@kylheku.com> - 2014-04-28 01:40 +0000
        Re: Table of "safe" methods to suppress "unused parameter" warnings? David Brown <david.brown@hesbynett.no> - 2014-04-19 17:52 +0200
  Re: Table of "safe" methods to suppress "unused parameter" warnings? Siri Crews <chine.bleu@yahoo.com> - 2014-06-11 02:04 -0700

csiph-web