Feature request for "friendship" of pointers in "C"
aotto
aotto1968@t-online.de
Sun Feb 2 07:44:00 GMT 2020
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"
- a POINTER to "base" is NOT a valid POINTER to "A" and "B"
I require a solution for this problem WITHOUT forced pointer cast
code and without "void* and type-check" inflation.
The following solutions are acceptable:
1. "gcc" discover by its own that "base" is a "friend" of "A" and "B".
2. add a "frienddef" keyword like "typedef" using:
    typedef struct base * baseP;
   typedef struct A   * aP;
   typedef struct P   * bP;
    frienddef baseP aP;
    frienddef baseP bP;
3. add a #PRAGMA to enable/disable this feature
4. add a "gcc" api to easy extend "GCC" without being FORCED
  to "hack" the core.
thanks for your help
More information about the Gcc
mailing list