Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: Tim Rentsch Newsgroups: comp.lang.c Subject: Re: Concatenated if and preprocessor Date: Fri, 14 Mar 2025 13:40:26 -0700 Organization: A noiseless patient Spider Lines: 27 Message-ID: <86bju3s5vp.fsf@linuxsc.com> References: <86frjfsgtb.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Date: Fri, 14 Mar 2025 21:40:27 +0100 (CET) Injection-Info: dont-email.me; posting-host="825d11fa9501a89399e86bed31f148c6"; logging-data="2137293"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/mjftCQ+TLDAbRktcc1H5ZG2vpBbcj9Yw=" User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) Cancel-Lock: sha1:cY36ROZWG5DyqnXzIG8kqvMs3ek= sha1:/6yiUzDXyqHD3fWda6EC4NKiD2k= Bytes: 1971 Richard Harnden 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.)