erregenden Lets sagen, ich habe diese Struktur:c struct Daten durch Offset
typedef struct nKey {
int num;
widget* widget;
} NUMBER_KEY;
und eine Funktion:
void dialKey(widget* widget) {
// Need to print 'num' of the struct that this widget resides in
}
Wie gehe ich um dies zu erreichen? Ich habe versucht, so etwas wie:
printf("%d", * (int *) widget - sizeof(int)); // Failure.org
edit: es ist davon auszugehen, dass das Widget in der Tat geführt wird, ist ein Mitglied einer NUMBER_KEY struct
bearbeiten: auf der Suche nach einer Lösung für das Problem nicht eine andere Methode.
Ihr Code wird nicht unbedingt so funktionieren, wie es ist, da es möglicherweise implementation-definierte Auffüllung zwischen Mitgliedern einer Struktur gibt. –
Das große Ding ist, dass der Zeiger zum Widget ist, nicht zum Widget-Zeiger. Subtrahieren von sizeof (int) von einem (int *) bewegt diesen Zeiger auch zurück zu sizeof (int) ints, nicht nur eins. Ganz zu schweigen von der Möglichkeit der Polsterung. –