rendered paste body#define class(cls) cls##_object *#define create(cls) ((class(cls)) malloc(sizeof(cls##_object)))#define subclass(cls) cls##_class cls;#define classdef(cls, sub...) \typedef struct cls##_class cls##_class; \typedef struct { \ sub \ cls##_class cls; \} cls##_object; \struct cls##_classclassdef(BaseObject) { uint32 refcount;};#define incref(object) do { ++object.BaseObject.refcount; } while(0)#define decref(object) do { --object.BaseObject.refcount; } while(0)classdef(TestObject, subclass(BaseObject)) { uint32 test;};int main(int argc, char **argv) { class(TestObject) foo = create(TestObject); foo.TestObject.test = 5; printf("%i\n", foo.TestObject.test); printf("%i\n", foo.BaseObject.refcount);}