En langage C, comment obtenir l'adresse de départ de struct à partir de l'adresse de son membre?comment obtenir l'adresse de départ de struct à partir de l'adresse de son membre
struct type1 {
//...
int member1;
//...
};
struct type1 obj1;
Et ptr1
est l'adresse du membre member1
dans obj1
, comment définir
macro #define start_add(ptr1, type1, member1)
pour obtenir obj1 adresse de départ de
?
Je pense que vous avez un supplément '&' 'avant (ptr1)'. 'ptr1' est déjà l'adresse du membre. –
Tout à fait raison, corrigé. –
Vous devez également ajouter un ensemble supplémentaire de parenthèses autour du résultat de la macro entière - rappelez-vous que '->' a une priorité supérieure à '(type)', donc si vous voulez appliquer '->' au résultat, vous en aurez besoin. – caf