Acceso a los miembros de la estructura como si fueran una sola matriz?
Tengo dos estructuras, con valores que deberían calcular un promedio ponderado, como esta versión simplificada:
typedef struct
{
int v_move, v_read, v_suck, v_flush, v_nop, v_call;
} values;
typedef struct
{
int qtt_move, qtt_read, qtt_suck, qtd_flush, qtd_nop, qtt_call;
} quantities;
Y luego los uso para calcular:
average = v_move*qtt_move + v_read*qtt_read + v_suck*qtt_suck + v_flush*qtd_flush + v_nop*qtd_nop + v_call*qtt_call;
Todos y cada uno de ellos necesito incluir otra variable. Ahora, por ejemplo, necesito incluirv_clean
yqtt_clean
. No puedo cambiar las estructuras a matrices:
typedef struct
{
int v[6];
} values;
typedef struct
{
int qtt[6];
} quantities;
Eso simplificaría mucho mi trabajo, pero son parte de una API que necesita que los nombres de las variables sean claros.
Entonces, estoy buscando una manera de acceder a los miembros de esas estructuras, tal vez usandosizeof()
, por lo que puedo tratarlos como una matriz, pero aún así mantener la API inmutable. Se garantiza que todos los valores sonint
, pero no puedo garantizar el tamaño de unaint
.
Escribir la pregunta vino a mi mente ... ¿Puede ununion
¿Hacer el trabajo? ¿Hay otra forma inteligente de automatizar la tarea de agregar otro miembro?
Gracias, Beco