抓取數據可以說我有這樣的結構: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