| Deutsch English Français Italiano |
|
<87zfhniaij.fsf@nosuchdomain.example.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Keith Thompson <Keith.S.Thompson+u@gmail.com>
Newsgroups: comp.lang.c
Subject: Re: Concatenated if and preprocessor
Date: Fri, 14 Mar 2025 14:10:28 -0700
Organization: None to speak of
Lines: 48
Message-ID: <87zfhniaij.fsf@nosuchdomain.example.com>
References: <vquuhg$34o8d$2@dont-email.me> <vr15ti$rtjs$1@dont-email.me>
<86frjfsgtb.fsf@linuxsc.com> <vr1rni$1q6m7$1@dont-email.me>
<86bju3s5vp.fsf@linuxsc.com>
MIME-Version: 1.0
Content-Type: text/plain
Injection-Date: Fri, 14 Mar 2025 22:10:32 +0100 (CET)
Injection-Info: dont-email.me; posting-host="bbf3b2da6e551caad2cd296cab2812d3";
logging-data="2179411"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18x/8aTqz+7vzbQ045iVF3o"
User-Agent: Gnus/5.13 (Gnus v5.13)
Cancel-Lock: sha1:hR8PZXq7+XaNPLtXCXVwIwmZLlc=
sha1:MtZjeXteg/el1f/OuUxH7vCc3vE=
Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
> Richard Harnden <richard.nospam@gmail.invalid> writes:
>> On 14/03/2025 16:44, Tim Rentsch wrote:
>>> for( int just_once = 1; just_once; just_once = 0 ){
>>
>> Any reason not to say ...
>>
>> do {
>> ...
>> } while (0);
>>
>> ... ?
>
> In fact using do/while(0) is what I first wrote. But then
> I thought, oh wait, what if an overzealous compiler gives
> a warning because the while() expression is always false? :-/
>
> It's because of examples like this that I am wary of rules
> like "enable all warnings" and "treat any warning condition
> as an error." I recently ran across a set of coding standard
> rules that included these rules: not just /some/ warning
> conditions, but ALL warning conditions. I still don't know
> if they were literally serious. (And my understanding is
> clang has a -Weverything option, which enables all warning
> conditions that clang is able to test for, no matter how
> silly.)
I've worked under such coding standards. Perhaps surprisingly, I
haven't found them to be terribly inconvenient. I rarely ran into
a warning that was inordinately difficult to avoid. I can see that
"clang -Weverything" would cause problems.
The most common inconvenience was that if I experimentally commented
out some code, and it caused some variable not to be referenced,
the build would fail. (I could just add `(void)foo;` to avoid that.)
To be clear, this was not code that I intended to commit.
I can imagine that there could be problems if a newer version of the
compiler produced new warnings, but we didn't often change compilers.
(In one obscure case, I wrote a wrapper script that could be
installed in $PATH as "gcc" that would invoke the real gcc and
filter out a particular warning. The wrapper was necessary due to
the behavior of a build script, not to an explicit coding standard.)
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
void Void(void) { Void(); } /* The recursive call of the void */