forbidden? unnecessary? (was: variable-length struct hack)
Doug Gwyn
gwyn at smoke.BRL.MIL
Sat Dec 9 19:57:32 AEST 1989
In article <4749 at fireball.cs.vu.nl> maart at cs.vu.nl (Maarten Litmaath) writes:
>But couldn't an conforming implementation FORBID the (T *) cast?!
No, a conforming implementation is obliged to accept a strictly
conforming application. It cannot impose its own additional
constraints beyond those spelled out in the Standard.
> strcpy(p->name = (char *)p + sizeof(T), s);
>If this method is used, copying the struct pointed to by p won't have strange
>effects, as long as *p isn't free()d. Regarding the struct dirent example
>I'd call that an improvement.
Hardly. The declared object T does not contain all of the information;
the "name" data lies outside the T object. This is as bad as the case
that Dennis objected to so far as its usability goes (apart from
linguistic correctness issues).
More information about the Comp.std.c
mailing list