Disons que j'ai cette struct:c struct saisir des données par offset
typedef struct nKey {
int num;
widget* widget;
} NUMBER_KEY;
et une fonction:
void dialKey(widget* widget) {
// Need to print 'num' of the struct that this widget resides in
}
Comment puis-je aller accomplir cela? J'ai essayé quelque chose comme:
printf("%d", * (int *) widget - sizeof(int)); // Failure.org
edit: il est sûr de supposer que le widget étant passé est en fait un membre d'une struct NUMBER_KEY
d'édition: la recherche d'une solution au problème pas une autre méthode.
Votre code ne fonctionnera pas nécessairement tel quel car il peut y avoir un remplissage défini par l'implémentation entre les membres d'une structure. –
La grande chose est que le pointeur est le widget, pas le pointeur du widget. En outre, en soustrayant sizeof (int) d'un (int *) déplace ce pointeur sizeof (int) ints, pas seulement un. Sans parler de la possibilité de rembourrage. –