Доступ к элементам структуры, как к одному массиву?

У меня есть две структуры со значениями, которые должны вычислять обдумываемое среднее, как в этой упрощенной версии:

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;

И затем я использую их для вычисления:

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;

Каждый раз и в них мне нужно включить другую переменную . Теперь, например, мне нужно включить v_clean и qtt_clean . Я не могу преобразовать структуры в массивы:

typedef struct
{
    int v[6];
} values;
typedef struct
{
    int qtt[6];
} quantities;

Это сильно упростило бы мою работу, но они являются частью API, которому нужно, чтобы имена переменных были ясными.

Итак, я ищу способ получить доступ к членам этих структур, возможно, используя sizeof () , поэтому я могу рассматривать их как массив, но при этом оставлять API неизменным. Гарантируется, что все значения равны int , но я не могу гарантировать размер int .

Мне пришло в голову написать вопрос ... Может ли профсоюз выполнить эту работу? Есть ли еще один умный способ автоматизировать задачу добавления еще одного участника?

Спасибо, Beco

6
задан timrau 20 August 2012 в 18:13
поделиться