微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以检测到 C 结构具有字段?

如何解决是否可以检测到 C 结构具有字段?

我需要在编译时通过宏检测结构是否有成员。我试过 offsetof(struct object,a_field) 但它会导致在编译时发出关于不存在的字段的错误。是否有其他方法可以检查 C 结构是否有字段?

我需要这个宏

MESSAGE(obj,method,...) obj->method(obj,##__VA_ARGS);

这样我也可以在非虚拟方法上使用它,例如:

MESSAGE(obj,...) method(obj,##__VA_ARGS);

因此通常检测是否有 method 成员,如果有,则将其称为 obj->member(obj,…),否则称为 member(obj,…)

解决方法

类型在编译时是已知的。这意味着您不能使用尚未在此类结构中声明的结构字段。您可以使用该字段,如果此类结构的提供者未正确声明该字段,则编译器会报错,但无法有条件地检查它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。