¿Cómo puedo pasar una matriz como parámetros a una función vararg?

Tengo un código que se parece a esto:

uint8_t activities[8];
uint8_t numActivities = 0;
...
activities[numActivities++] = someValue;
...
activities[numActivities++] = someOtherValue;
...
switch (numActivities)
{
   0 : break;
   1 : LogEvent(1, activities[0]);  break;
   2 : LogEvent(1, activities[0], activities[1]);  break;
   3 : LogEvent(1, activities[0], activities[1], activities[2]);  break;
   // and so on
}

donde LogEvent () es una función de varargs.

¿Hay una manera más elegante de hacer esto?

[Actualización] Aplogies para @ 0x69 et al. Omito decir que hay muchos casos en los que LogEvent () no pudo tomar una matriz como parámetro. Lo siento.

Respuestas a la pregunta(2)

Su respuesta a la pregunta