如何解决是否可以检测到 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 举报,一经查实,本站将立刻删除。