抓取数据可以说我有这样的结构:C结构由偏移
typedef struct nKey {
int num;
widget* widget;
} NUMBER_KEY;
和功能:
void dialKey(widget* widget) {
// Need to print 'num' of the struct that this widget resides in
}
我如何去实现呢?我想是这样的:
printf("%d", * (int *) widget - sizeof(int)); // Failure.org
编辑:它是安全的假设,所传递的控件实际上是一个NUMBER_KEY结构
编辑的成员:寻找一个解决问题的方法不是另一种方法。
您的代码不会一定按原样工作,因为在结构的成员之间可能存在实现定义的填充。 – 2009-07-30 20:01:30
重要的是指针指向的是小部件,而不是指向小部件的指针。此外,从(int *)中减去sizeof(int)将指针移回sizeof(int)ints,而不仅仅是一个。更不用说填充的可能性了。 – 2009-07-30 20:57:02