Comment puis-je obtenir/définir une struct membre par compensation

Ignorant rembourrage/problèmes d'alignement et compte tenu de la structure suivante, quelle est la meilleure façon d'obtenir et de définir la valeur de member_b sans utiliser le nom de membre.

struct mystruct {
    int member_a;
    int member_b;
}
struct mystruct *s = malloc(sizeof(struct mystruct));

Mettre une autre manière; Comment vous exprimer la suivante en termes de pointeurs/offsets:

s->member_b = 3;
printf("%i",s->member_b);

Ma conjecture est à

  • calculer le décalage par trouver le sizeof l'member_a (int)
  • fonte de la structure à un seul mot de type pointeur (char?)
  • créer un int pointeur et réglez l'adresse (pour les *charpointer + offset?)
  • utiliser mon int pointeur pour définir le contenu de la mémoire

mais je suis un peu confus au sujet de la conversion vers un type char ou si quelque chose comme memset est plus adéquat ou si en général je suis aproching ce totalement faux.

Bravo pour toute aide

  • Pourquoi voulez-vous faire cela?
  • Je suis combler un écart entre un environnement de script et les C-extensions, (pensez à Python, C-Types), et je suis à la définition et à l'accès aux structures lors de l'exécution.
  • Alors vous êtes la génération de code C? Dans ce cas, vous pouvez générer du code C pour accéder les membres de la structure aussi. Fait que j'ai mal compris?