我正在尝试编写一个宏来协助 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 部分无法正常工作时遇到问题。