* aotto:
> Hi, the following scenario has a "definition hole" in the "C" language
>
> code example:
>
> -------------------------
> struct base {
> ...
> };
>
> struct A {
> struct base obj;
> ...
> } aObj;
>
> struct B {
> struct base obj;
> ...
> } bObj;
>
> void method_base (struct base * hdl, ...);
>
> method_base(&aObj, ...)
> method_base(&bObj, ...)
> ------------------------
>
> - a POINTER to "A" is also a valid POINTER to "base"
>
> - a POINTER to "B" is also a valid POINTER to "base"
This is close to one of the extensions enabled by -fplan9-extensions.
It accepts such code if you make the base member anonymous:
struct A {
struct base;
...
} aObj;
struct B {
struct base;
...
} bObj;