Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > comp.lang.c > #391207

Re: Concatenated if and preprocessor

From Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups comp.lang.c
Subject Re: Concatenated if and preprocessor
Date 2025-03-14 15:57 -0700
Organization A noiseless patient Spider
Message-ID <8634ffrzj0.fsf@linuxsc.com> (permalink)
References (1 earlier) <vr15ti$rtjs$1@dont-email.me> <86frjfsgtb.fsf@linuxsc.com> <vr1rni$1q6m7$1@dont-email.me> <86bju3s5vp.fsf@linuxsc.com> <87zfhniaij.fsf@nosuchdomain.example.com>

Show all headers | View raw


Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:

> 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.

I'm guessing this comment is an overstatement, and that you have
worked with similar but not nearly as stringent coding standards.
The coding standard I was referring to above says "Compile with
all possible warnings active" (and then also says something about
addressing them).

>  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.

Yes, exactly my point.  "Lots of warnings" is not at all the same as
"all possible warnings".

> 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.

Another question about coding standards is at what point in the
development process do they apply.  The rule in question here
says to _compile_ with all possible warnings active, presumably
meaning all compilations, not just those at checkin time.

> 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.

The two cardinal sins for giving error/warning options for a coding
standard are:  one, including an option whose meaning is not well
defined;  and two, including an option whose meaning changes over
time, either because of using a different compiler or because of
using a different version of the same compiler.  Saying it doesn't
happen often is no excuse;  developers should never agree to
requirements that mandate moving targets.

> (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.)

A reasonable course of action under the circumstances, I expect.  At
the same time, it shows a shortcoming of the coding standard in
effect, if said standard says builds should not have any warnings
(and no exception is made for spurious warnings that occur because
of how builds are done).

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


Thread

Concatenated if and preprocessor pozz <pozzugno@gmail.com> - 2025-03-13 16:44 +0100
  Re: Concatenated if and preprocessor David Brown <david.brown@hesbynett.no> - 2025-03-13 16:55 +0100
  Re: Concatenated if and preprocessor scott@slp53.sl.home (Scott Lurndal) - 2025-03-13 16:11 +0000
  Re: Concatenated if and preprocessor James Kuyper <jameskuyper@alumni.caltech.edu> - 2025-03-13 12:07 -0400
  Re: Concatenated if and preprocessor Kaz Kylheku <643-408-1753@kylheku.com> - 2025-03-13 16:30 +0000
  Re: Concatenated if and preprocessor bart <bc@freeuk.com> - 2025-03-13 17:29 +0000
  Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-13 14:37 -0700
    Re: Concatenated if and preprocessor Lynn McGuire <lynnmcguire5@gmail.com> - 2025-03-13 18:25 -0500
      Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-14 09:26 -0700
  Re: Concatenated if and preprocessor James Kuyper <jameskuyper@alumni.caltech.edu> - 2025-03-13 12:19 -0400
  Re: Concatenated if and preprocessor pozz <pozzugno@gmail.com> - 2025-03-14 13:02 +0100
    Re: Concatenated if and preprocessor David Brown <david.brown@hesbynett.no> - 2025-03-14 14:13 +0100
    Re: Concatenated if and preprocessor Dan Purgert <dan@djph.net> - 2025-03-14 13:44 +0000
    Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-14 09:44 -0700
      Re: Concatenated if and preprocessor Richard Harnden <richard.nospam@gmail.invalid> - 2025-03-14 18:15 +0000
        Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-14 13:40 -0700
          Re: Concatenated if and preprocessor Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-03-14 14:10 -0700
            Re: Concatenated if and preprocessor Richard Harnden <richard.nospam@gmail.invalid> - 2025-03-14 21:31 +0000
              Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-14 15:29 -0700
                Re: Concatenated if and preprocessor David Brown <david.brown@hesbynett.no> - 2025-03-15 17:32 +0100
            Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-14 15:57 -0700
              Re: Concatenated if and preprocessor Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-03-14 16:27 -0700
                Re: Concatenated if and preprocessor scott@slp53.sl.home (Scott Lurndal) - 2025-03-15 15:06 +0000
                Re: Concatenated if and preprocessor Tim Rentsch <tr.17687@z991.linuxsc.com> - 2025-03-15 08:49 -0700
                Re: Concatenated if and preprocessor scott@slp53.sl.home (Scott Lurndal) - 2025-03-15 17:28 +0000
            Re: Concatenated if and preprocessor David Brown <david.brown@hesbynett.no> - 2025-03-15 17:28 +0100
        Re: Concatenated if and preprocessor Lawrence D'Oliveiro <ldo@nz.invalid> - 2025-03-15 07:03 +0000
    Re: Concatenated if and preprocessor Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2025-03-14 11:10 -0700
    Re: Concatenated if and preprocessor James Kuyper <jameskuyper@alumni.caltech.edu> - 2025-03-14 23:20 -0400

csiph-web