C でオブジェクト指向プログラミングを支援するマクロを作成しようとしています。クラス情報を定数構造体に格納するため、次のことを行うマクロを作成する必要があります。
- オブジェクトの型を取る (逆参照されたポインタの型)
- 追加
_info
して、目的の classInfo 構造体の名前を取得します - 関数に渡すことができるように、そのシンボルのアドレスを取得します
destroyObject
クラス構造体とオブジェクト自体へのポインターを使用して関数を呼び出します
例:
queue_t* p = NULL;
delete(p);
delete
次のように展開する必要があります。
destroyObject(&(queue_t_info), p);
このマクロを使用してみましたが、作業に取り掛かることができません:
#define delete(X) (destroyObject(&(typeof(*X)##_info), X))
typeof パーツが正しく機能しないという問題があります。