From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: phillip.wood@dunelm.org.uk
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH] revision: use C99 declaration of variable in for() loop
Date: Wed, 17 Nov 2021 23:30:02 +0100 [thread overview]
Message-ID: <20211117223002.GC5811@szeder.dev> (raw)
In-Reply-To: <61518213-9ce8-00d2-efd9-7f2091c574c4@gmail.com>
On Wed, Nov 17, 2021 at 11:03:58AM +0000, Phillip Wood wrote:
> Hi Junio
>
> On 15/11/2021 06:27, Junio C Hamano wrote:
> > There are certain C99 features that might be nice to use in our code
> > base, but we've hesitated to do so in order to avoid breaking
> > compatibility with older compilers. But we don't actually know if
> > people are even using pre-C99 compilers these days.
> >
> > One way to figure that out is to introduce a very small use of a
> > feature, and see if anybody complains, and we've done so to probe
> > the portability for a few features like "trailing comma in enum
> > declaration", "designated initializer for struct", and "designated
> > initializer for array". A few years ago, we tried to use a handy
> >
> > for (int i = 0; i < n; i++)
> > use(i);
> >
> > to introduce a new variable valid only in the loop, but found that
> > some compilers we cared about didn't like it back then. Two years
> > is a long-enough time, so let's try it agin.
> >
> > If this patch can survive a few releases without complaint, then we
> > can feel more confident that variable declaration in for() loop is
> > supported by the compilers our user base use. And if we do get
> > complaints, then we'll have gained some data and we can easily
> > revert this patch.
>
> I like the idea of using a specific test balloon for the features that we
> want to use but wont this one break the build for anyone doing 'make
> DEVELOPER=1' because -Wdeclaration-after-statement will error out. I think
> we could wrap the loop in gcc's warning pragmas to avoid that.
The scope of the loop variable is limited to the loop, so I don't
think this is considered as declaration after statement, just like
other variable declarations in limited scopes that are abundant in
Git's codebase, e.g.:
printf("...");
if (var) {
int a;
...
}
FWIW, I've spent some time with Compiler Explorer compiling a for loop
initial declaration after a statement with '-std=c99 -Werror
-Wdeclaration-after-statement', and none of them complained (though
there were some that didn't understand the '-std=c99' or '-Wdecl...'
options or couldn't compile it for some other reason).
next prev parent reply other threads:[~2021-11-17 22:30 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-13 12:28 [PATCH] MyFirstContribution.txt: fix undeclared variable i in sample code Saksham Mittal
2021-11-13 13:05 ` Johannes Altmanninger
2021-11-13 13:08 ` Saksham Mittal
2021-11-14 6:41 ` Junio C Hamano
2021-11-14 14:28 ` Is 'for (int i = [...]' bad for C STD compliance reasons? (was: [PATCH] MyFirstContribution.txt: fix undeclared variable i in sample code) Ævar Arnfjörð Bjarmason
2021-11-14 18:03 ` Is 'for (int i = [...]' bad for C STD compliance reasons? Junio C Hamano
2021-11-14 18:25 ` Ævar Arnfjörð Bjarmason
2021-11-14 18:57 ` brian m. carlson
2021-11-14 19:33 ` Carlo Arenas
2021-11-14 19:01 ` Carlo Arenas
2021-11-15 6:27 ` [PATCH] revision: use C99 declaration of variable in for() loop Junio C Hamano
2021-11-15 7:44 ` Martin Ågren
2021-11-16 8:29 ` Junio C Hamano
2021-11-15 22:26 ` brian m. carlson
2021-11-17 11:03 ` Phillip Wood
2021-11-17 12:39 ` Ævar Arnfjörð Bjarmason
2021-11-17 22:30 ` SZEDER Gábor [this message]
2021-11-18 7:09 ` Junio C Hamano
2021-12-07 11:10 ` Phillip Wood
2021-12-07 20:37 ` Junio C Hamano
2021-12-08 12:17 ` Removing -Wdeclaration-after-statement (was: [PATCH] revision: use C99 declaration of variable in for() loop) Ævar Arnfjörð Bjarmason
2021-12-08 17:05 ` Removing -Wdeclaration-after-statement Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211117223002.GC5811@szeder.dev \
--to=szeder.dev@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=phillip.wood@dunelm.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).