Sujet : Re: Struct Error
De : jameskuyper (at) *nospam* alumni.caltech.edu (James Kuyper)
Groupes : comp.lang.cDate : 23. Jan 2025, 09:37:24
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vmsv44$1huu6$1@dont-email.me>
References : 1 2 3
User-Agent : Mozilla Thunderbird
On 1/22/25 22:49, m137 wrote:
On Thu, 23 Jan 2025 1:05:25 +0000, James Kuyper wrote:
>
I have many draft versions of the C standard. n2912.pdf, dated
2022-06-08, says in 6.7.2.1.p3 about struct types that "... the type is
incomplete144) until immediately after the closing brace of the list
defining the content, and complete thereafter."
>
Therefore, struct scenet is not a complete type until the closing brace
of it's declaration.
>
However, that sentence disappeared in n3047.pdf, dated 2022-08-04. Can
anyone tell me why it was removed? With it gone, I'm not sure it is
still considered an incomplete type.
>
It seems to have been moved to N3047 6.2.5(25): "[...] A structure or
union type of unknown content (as described in 6.7.2.3) is an incomplete
type. [...]" (see here:
https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf#page=57).
It would be more accurate to say that it's been moved to 6.7.2.3,
concerning tags, which is then cross-referenced by 6.2.5:
"... the type (except enumerated types with a fixed underlying type) is
incomplete until immediately after the closing brace of the list
defining the content for the first time and complete thereafter."
It was a bit tricky to locate, because "unknown content" sounded like
the kind of term that the standard defines in one spot and uses
elsewhere, whereas in fact that term is used only once, and not defined
anywhere. Instead, it appears to be referring, by negation, to ther
terms "structure content", "union constent", and "enumeration content",
which are defined, but not until a few paragraphs later in 6.7.2.3.