Path: csiph.com!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch
Newsgroups: comp.lang.c
Subject: Re: Struct Error
Date: Wed, 22 Jan 2025 23:11:54 -0800
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <867c6m3sxx.fsf@linuxsc.com>
References:
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Thu, 23 Jan 2025 08:11:55 +0100 (CET)
Injection-Info: dont-email.me; posting-host="5251420bc9371d9685ddcd1ded05bea1"; logging-data="1611017"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/xqoTTtVOqHsUzK1aIQ8WGImQBQxV0ZR0="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:8NnetXbFASJeVbVzAOqvgvNr41I= sha1:GxhvhfgJsOwLRRdSW3ahAcomwkE=
Xref: csiph.com comp.lang.c:390104
bart writes:
> Gcc 14.1 gives me an error compiling this code:
>
> struct vector;
> struct scenet;
>
> struct vector {
> double x;
> double y;
> double z;
> };
>
> struct scenet {
> struct vector center;
> double radius;
> struct scenet (*child)[];
> };
>
> The error is:
>
> error: array type has incomplete element type 'struct scenet'
> struct scenet (*child)[];
> ^~~~~
>
> Is there any way to fix this, or is it not possible?
>
> (This comes from generated code. Idiomatic C would use a T* here
> rather than T(*)[], but that is not an option. Other compilers like
> tcc, DMC and mine have no problem with it.)
The code shown violates a constraint in the C standard, because
the element type of the array declarator is an incomplete type
at the point the 'child' member is declared, so a diagnostic
is required.