git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Is 'for (int i = [...]' bad for C STD compliance reasons?

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 14, 2021, 18:03 UTC
Message-ID
<xmqqilwulims.fsf@gitster.g>
In-Reply-To
<211114.868rxqu7hr.gmgdl@evledraar.gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 6 quoted lines
>> Also, our code does not introduce a new variable in the first part
>> of "for (;;)" loop control, so even if the original lacked decl for
>> "i", the posted patch is not how we write our code for this project.
>
> Just curious: Out of preference, or for compatibility with older C
> standards?
The latter.

cc0c4297 (CodingGuidelines: spell out post-C89 rules, 2019-07-16) adds a few "weather balloons say these are OK" together with this exact one as "not yet allowed". We (at least, those of us who have enough knowledge and authority to propose changes to the guidelines) all know that particular feature is a nice thing to use if everybody we care about supports it [*1*].

Here is the thread that resulted in the relevant part of the guideilne.

https://lore.kernel.org/git/CAPUEspgjSAqHUP2vsCCjqG8b0QkWdgoAByh4XdqsThQMt=V38w@mail.gmail.com/

The "another patch that tried to use it late last year" the thread refers to is https://lore.kernel.org/git/20181114004745.GH30222@szeder.dev/

If I am not mistaken, Carlo added gcc-4.8 CI job to catch these recently?

Now, "Centos 6 is no longer" cannot be called a good response to this message. We stopped at seeing the first failure, and breakages on other platforms were not even counted back then. To those whose compilers also barfed, it was sufficient that we pulled the plug after seeing a failure on Centos 6.

But two years may be long enough for us to try again. If we want to pursue it, we'd need to raise a weather balloon that would break compilers that have been happily grokking our code loudly by being in a central place that will never be conditionally compiled out, and is easy to back out by being in ultra-stable location.

cbc0f81d (strbuf: use designated initializers in STRBUF_INIT, 2017-07-10) is an example that Peff found and used a great such location.

I know you are capable of reading Documentation/CodingGuidelines and running "git blame" on it, and then use mailing list archive to dig to find the answer, and it was a bit of disappointment to see this was asked as a question, rather than a well researched "now after two years, let's try this again".

[References]
*1* https://lore.kernel.org/git/xmqqlgnrq9qi.fsf@gitster.mtv.corp.google.com/
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 6 of 22 in “MyFirstContribution.txt: fix undeclared variable i in sample code”
  1. MyFirstContribution.txt: fix undeclared variable i in sample codeSaksham Mittal, Nov 13, 2021
  2. Johannes AltmanningerNov 13, 2021
  3. Saksham MittalNov 13, 2021
  4. Junio C HamanoNov 14, 2021
  5. 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, Nov 14, 2021
  6. Junio C HamanoNov 14, 2021
  7. Ævar Arnfjörð BjarmasonNov 14, 2021
  8. Carlo ArenasNov 14, 2021
  9. brian m. carlsonNov 14, 2021
  10. Carlo ArenasNov 14, 2021
  11. revision: use C99 declaration of variable in for() loopJunio C Hamano, Nov 15, 2021
  12. Martin ÅgrenNov 15, 2021
  13. Junio C HamanoNov 16, 2021
  14. brian m. carlsonNov 15, 2021
  15. Phillip WoodNov 17, 2021
  16. Ævar Arnfjörð BjarmasonNov 17, 2021
  17. SZEDER GáborNov 17, 2021
  18. Junio C HamanoNov 18, 2021
  19. Phillip WoodDec 7, 2021
  20. Junio C HamanoDec 7, 2021
  21. Removing -Wdeclaration-after-statement (was: [PATCH] revision: use C99 declaration of variable in for() loop)Ævar Arnfjörð Bjarmason, Dec 8, 2021
  22. Junio C HamanoDec 8, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.