Supongamos que tengo este struct
(dicho sea de paso, que contienen campos de bits, pero no se debe cuidar):¿Cómo acceder a los miembros de una 'estructura' de acuerdo con un entero variable en C?
struct Element {
unsigned int a1 : 1;
unsigned int a2 : 1;
...
unsigned int an : 1;
};
y quiero acceder a la i'th miembro de una manera conveniente. Examinemos una solución de recuperación.
me ocurrió con esta función:
int getval(struct Element *ep, int n)
{
int val;
switch(n) {
case 1: val = ep->a1; break;
case 2: val = ep->a2; break;
...
case n: val = ep->an; break;
}
return val;
}
pero sospecho que hay una solución mucho más simple. Algo así como el estilo de acceso a la matriz, tal vez.
he tratado de hacer algo por el estilo:
#define getval(s,n) s.a##n
Pero como era de esperar no funciona.
¿Existe una mejor solución?
Me temo que deberíamos importarnos si hay campos de bit o no: no se puede definir un puntero a un miembro de campo de bit, y el estilo de acceso de matriz implica el manejo de puntero. – mouviciel