我正在使用来自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
我错过了一些明显的东西吗?有关如何修复的任何想法?
最佳答案 这看起来非常像一个bug.
请提交.
我会说这是某种指针算法魔术,但我无法想象是这样的.
如果你真的想探索这个问题,我会建议抓住各种子表达的地址,看看你是否能找到它决定抓错区域的地方.
见杰森对原始问题的评论;这应该是答案.