【发布时间】:2012-06-15 18:07:16
【问题描述】:
在 gcc 中可以创建一个匿名结构,如下所示:
struct test2 {
struct {
int x;
int y;
};
int z;
};
但是当我尝试使用匿名结构的预定义版本做同样的事情时,它失败了:
struct test1 {
int x;
int y;
};
struct test2 {
struct test1;
int z;
};
我想这样做的原因是我想定义一个结构,其中包含一组对应于 C 类的“成员函数”的函数指针。如果我不匿名包含该结构,那么我最终不得不做一些像这样令人讨厌的事情:
object->API->function(object,...);
这对于我需要做的一些事情来说根本不起作用(例如,由于“object.API”与“object”不匹配,因此很难或不可能从支持的其他语言进行自动绑定隐藏对象指针。)
目前,我只是复制/粘贴函数,但这很乏味且容易出错。我可以使用 C 预处理器,但是创建一个包含一堆函数原型的宏似乎很难看。
【问题讨论】:
-
阅读编译器的消息,迈克尔。它有重要的事情要告诉你。