2010-12-12 32 views
1

Étant donné un pointeur sur la structure, puis-je écrire un #define qui accèderait à un membre de la structure?#define qui accéderait au membre de la structure?

struct s_block { 
size_t size; 
struct s_block *ptr; 
}; 

#define SIZER(ptr) // will access size member ???? 
+0

Oui, mais pourquoi voudriez-vous le faire? Ou voulez-vous dire: étant donné un pointeur sur le membre 'ptr' de la structure, existe-t-il un moyen d'écrire une macro pour accéder au membre' size' correspondant? –

+0

Non, je veux réellement une macro qui me donnerait un résultat basé sur ptr à la structure, pas membre de la structure. Mais, j'ai déjà la réponse. Merci pour la clarification . – newprint

Répondre

3
#define SIZER(ptr) (ptr)->size 

Prenez note cependant que vous devez passer un pointeur vers un s_block pour que cela fonctionne. Enfin, cela devrait être dans n'importe quel manuel de référence couvrant le langage de programmation C. En savoir plus Je vous suggère de choisir un. K&R est très bon, même aujourd'hui.

+5

Je voulais juste noter que #define SIZER (p) (p) -> taille est équivalente. Je veux m'assurer qu'il n'y a pas de confusion avec des noms similaires. – caveman

0
#define SIZER(ptr) (ptr)->size