[PATCH 5/5] CodingGuidelines: recommend against unportable C99 struct syntax
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Oct 7, 2022, 09:30 UTC
- Message-ID
- <patch-5.5-fc02ae52f4a-20221007T092505Z-avarab@gmail.com>
- In-Reply-To
- <cover-0.5-00000000000-20221007T092505Z-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> --- Documentation/CodingGuidelines | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 893f960231f..65b608ca0a2 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.971.ge79ff6d20e7