如果结构有成员,我需要在编译时通过宏检测。我已经尝试过offsetof(struct object, a_field)
,但它会导致在编译时发出关于不存在字段的错误。是否有其他方法可以检查 C 结构是否有字段?
我需要这个作为宏
MESSAGE(obj, method, ...) obj->method(obj, ##__VA_ARGS);
这样我也可以在非虚拟方法上使用它,例如:
MESSAGE(obj, method, ...) method(obj, ##__VA_ARGS);
因此,通常要检测是否存在method
成员,如果有,则将其称为 asobj->member(obj, …)
和 as member(obj, …)
else。