[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sharutils-4.11.1] Compilation warnings
From: |
Bruce Korb |
Subject: |
Re: [sharutils-4.11.1] Compilation warnings |
Date: |
Thu, 06 Dec 2012 18:09:41 -0800 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121025 Thunderbird/16.0.2 |
On 12/06/12 16:29, Eric Blake wrote:
> You can also shut up the compiler by doing tricks like
> strstr((const char *)expr, "")
> although I'm not sure they are worth it.
For other applications, I use C:
#define C(_t, _v) ((_t)(void *)(_v))
but here I will just directly add the dual layered casting because
it comes from text that gets inserted into other people's programs.
WRT: using "%lu" for uint64_t formatting:
> ... The only portable solution here is to cast to '[u]intmax_t'.
What is the correct formatting element? I can't quite figure that out.
If it is variable (i.e. sometimes "%lu" and sometimes "%llu"), I'm
still hosed. Maybe just cast it to "unsigned int" and print the wrong
value on 16 bit platforms with 32 bit pids. :)
WRT: unused return value
> To warn you that you are blatantly ignoring the chance of failure.
If I've cast it to void, then it is pretty likely I am very much not
interested in what the compiler has to say:
>> If the command succeeds, cool. If not, there's nothing I can do about it
>> but ignore it.
> Then use the gnulib module ignore-value,
Yep. Paul mentioned it, too.
> ignore_value(system(fil_name))
> if you really are absolutely positive that there is no reasonable
> message to write to stderr if the command fails to run. But I suspect
> that you really have a bug, and SHOULD be caring about system() failure.
I am certain there is nothing reasonable to do.
>> Consequently, the value is valueless. If the compiler is going to complain
>> about
>> an unused value when that value is explicitly cast to void, then it is a
>> compiler bug.
>
> Yes, we (aka gnulib writers) have argued that point with gcc developers
> in the past, and the gcc guys argued back that the GNU Coding Standards
> discourage cast-to-void and so their choice to not treat cast-to-void as
I had guessed that was the case. The GCC guys violate a different principle
that I put above "GNU Coding Standards": the programmer knows better than
the tool. Any tool insisting that it knows better than a user explicitly
saying, "I want to use it this way" is wrong. Period. But I'm not quite
Quixotic enough to go charging off on that one again. :)
> Besides, ignore_value(system(foo)) does look better than
> (void)system(foo),
different people have different senses of aesthetics.
Anyway, very long story short, I'll add in the ignore-value module.
Thank you! Regards, Bruce
- [sharutils-4.11.1] Compilation warnings, Petr Písař, 2012/12/04
- [PATCH 1/2] Fix strict-aliasing warning in MD5, Petr Písař, 2012/12/04
- [PATCH 2/2] Fix unused wariable warning, Petr Písař, 2012/12/04
- Re: [sharutils-4.11.1] Compilation warnings, Bruce Korb, 2012/12/05
- Re: [sharutils-4.11.1] Compilation warnings, Petr Pisar, 2012/12/06
- Re: [sharutils-4.11.1] Compilation warnings, Bruce Korb, 2012/12/06
- Re: [sharutils-4.11.1] Compilation warnings, Paul Eggert, 2012/12/06
- Re: [sharutils-4.11.1] Compilation warnings, Eric Blake, 2012/12/06
- Re: [sharutils-4.11.1] Compilation warnings,
Bruce Korb <=
- Re: [sharutils-4.11.1] Compilation warnings, Petr Pisar, 2012/12/07
- Re: [sharutils-4.11.1] Compilation warnings, Eric Blake, 2012/12/07