4

我正在使用 cocos3d 中的一个名为 CC3IntPoint 的结构:

typedef struct {
  GLint x;    /**< The X-componenent of the point. */
  GLint y;    /**< The Y-componenent of the point. */
} CC3IntPoint;

当我运行我的程序时,它在调试器中看起来很正常:

(lldb) p pos
(CC3IntPoint) $5 = {
  (GLint) x = 48
  (GLint) y = 91
}
(lldb) p pos.y
(GLint) $6 = 91

但是,如果我对 进行任何数学运算pos.y,它会使用pos.x! 例如:

(lldb) p pos.y+1
(int) $7 = 49
(lldb) p pos.y*1
(int) $8 = 48

我在这里遗漏了一些明显的东西吗?关于如何解决的任何想法?

4

1 回答 1

2

这看起来很像一个错误。

请归档。

我会说这是某种指针算术魔术,但我无法想象会是这样。

如果你真的想探索这个问题,我建议你抓取各种子体验的地址,看看你是否能找到它决定抓取错误字段的地方。

请参阅 Jason 对原始问题的评论;这应该是真正的答案。

于 2013-07-28T01:05:08.457 回答