ho qualche codice che assomiglia a questo:Come posso passare un array come parametri ad una funzione vararg?
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
}
dove LogEvent() è una funzione varargs.
C'è un modo più elastico per farlo?
[Aggiorna] Aplogie a @ 0x69 et al. Ho omesso di dire che ci sono molti casi in cui LogEvent() non può prendere un array come parametro. Scusate.
refactoring _LogEvent_ ad accettare 'LogEvent (1, attività, numActivities)' –
Si potrebbe altrettanto bene passare tutti loro, se ce ne sono pochi (es. 4 max). –
Possibile duplicato di [Richiamo dinamico di una funzione C con un argomento varargs] (http://stackoverflow.com/questions/280940/calling-a-c-function-with-a-varargs-argument-dynamically) –