Sujet : Re: Struct Error
De : noone (at) *nospam* noone.net (Andrey Tarasevich)
Groupes : comp.lang.cDate : 03. Feb 2025, 05:35:59
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vnph3i$13tcm$1@dont-email.me>
References : 1
User-Agent : Mozilla Thunderbird
On Wed 1/22/2025 8:14 AM, bart wrote:
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?
C has always been very strict about completeness of the element type in array declarations. The element type has to be complete, period.
Another manifestation of the same issue is demonstrated by the following example
struct S;
void foo(struct S a[]) {}
The function parameter declaration is invalid in C sue to incompleteness of `struct S`. Even though the declaration will be implicitly adjusted anyway to
void foo(struct S *a) {}
and this adjusted version is perfectly valid the in C (despite incompleteness of `struct S`), the language still rejects the original variant.
C++ is more lenient in such contexts.
-- Best regards,Andrey