On 23 July 2013 03:43, Andreas Färber <afaerber@xxxxxxx> wrote: > v2 improves internal vs. "public" header separation for GIC. > As before, no feedback was received to address PMM's QOM concerns, > so this is what we have as design patterns for the moment. I had a thought about this. Suppose we have our class header files do something like this: #ifdef MYCLASS_IMPLEMENTATION #define PRIVATE #else #ifdef __GNUC__ #define PRIVATE __attribute__((deprecated("this is a private field"))) #else #define PRIVATE #endif typedef struct MyObject { int publicfield; int privatefield PRIVATE; } MyObject; Then we can allow both users of the class and the implementation to share the same header file (obviously only the implementation defines MYCLASS_IMPLEMENTATION before using it). The users can embed the struct MyObject with no problems, but if they try to directly access a private field this happens: /tmp/zz9.c:22:5: warning: ‘privatefield’ is deprecated (declared at /tmp/zz9.c:12): this is a private field [-Wdeprecated-declarations] (Since this is only a safety-guard against accidental uses, it's OK that it's only present when building with gcc.) thanks -- PMM _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/cucslists/listinfo/kvmarm