[PATCH v2 5/5] CodingGuidelines: recommend against unportable C99 struct syntax
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Oct 10, 2022, 20:38 UTC
- Message-ID
- <20221010203800.2154698-6-gitster@pobox.com>
- In-Reply-To
- <20221010203800.2154698-1-gitster@pobox.com>
From: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Per 33665d98e6b (reftable: make assignments portable to AIX xlc v12.01, 2022-03-28) forms like ".a.b = *c" can be replaced by using ".a = { .b = *c }" instead.
We'll probably allow these sooner than later, but since the workaround is trivial let's note it among the C99 features we'd like to hold off on for now.
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com> --- Documentation/CodingGuidelines | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 9598b45f7e..cbe0377699 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -242,6 +242,10 @@ For C programs: printf("%"PRIuMAX, (uintmax_t)v). These days the MSVC version we rely on supports %z, but the C library used by MinGW does not. + . Shorthand like ".a.b = *c" in struct assignments is known to trip + up an older IBM XLC version, use ".a = { .b = *c }" instead. See + the 33665d98e6b portability fix from mid-2022. + - Variables have to be declared at the beginning of the block, before the first statement (i.e. -Wdeclaration-after-statement).
-- 2.38.0-167-gf9a88ca9e9