这可能是我做错了什么非常愚蠢的事情,但我无法弄清楚它是什么。
我有一个 struct PDRect
,其成员是 aPDPoint
和PDSize
:
typedef struct {
GLfloat x, y;
} PDPoint;
typedef struct {
GLfloat width, height;
} PDSize;
typedef struct {
PDPoint origin;
PDSize size;
} PDRect;
当我实例化一个时,像这样:
PDRect rect = {
.origin = {
.x = 0,
.y = 0
},
.size = {
.height = .5,
.width = .5
}
};
调试器说rect.origin.width
andrect.origin.height
都存在且等于 0,rect.size.x
andrect.size.y
都存在且等于 0.5。我不知道为什么会这样。
为清晰而编辑:我的困惑是为什么 rect.origin(它是一个 PDPoint)具有与之关联的高度和宽度值,而 rect.size(它是一个 PDSize)具有与之关联的 x 和 y 值。原点不应该只有 x 和 y 并且大小只有高度和宽度吗?
编辑:它实际上修复了它让它们以非匿名方式声明,即:
typedef struct _PDPoint {
GLfloat x, y;
} PDPoint;
typedef struct _PDSize {
GLfloat width, height;
} PDSize;
typedef struct _PDRect {
PDPoint origin;
PDSize size;
} PDRect;
我仍然不确定我是否真的理解为什么会有所作为,但它似乎已经解决了这个问题。