From: Jeff King Date: Tue, 11 Oct 2022 00:09:50 GMT Subject: Re: [PATCH v2 5/5] CodingGuidelines: recommend against unportable C99 struct syntax Message-ID: In-Reply-To: <20221010203800.2154698-6-gitster@pobox.com> On Mon, Oct 10, 2022 at 01:38:00PM -0700, Junio C Hamano wrote: > 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. FWIW, the use of the word "assignment" here left me scratching my head. Reading 33665d98e6b, it is about struct initialization. C99 does allow assignment from a compound literal, like: foo = (struct some_struct){ .a = 1, .b = 2 }; but I don't think we have any examples in the current code (and I think we'd consider it a different feature for purposes of testing a weather balloon). -Peff