Mam niektóre kodu, który wygląda tak:Jak mogę przekazać tablicę jako parametry do funkcji 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
}
gdzie LogEvent() jest funkcją varargs.
Czy istnieje bardziej elitarny sposób na zrobienie tego?
[Aktualizacja] Aplogies to @ 0x69 i in. Nie powiedziałem, że istnieje wiele przypadków, w których LogEvent() nie może wziąć tablicy jako parametru. Przepraszam.
byłaby _LogEvent_ przyjąć 'LogEvent (1, działania, numActivities)' –
Mogłeś równie dobrze przekazać wszystkie z nich, jeśli jest ich niewiele (np. 4 maks.). –
Możliwy duplikat funkcji [Wywołanie funkcji C z dynamicznym argumentem varargs] (http://stackoverflow.com/questions/280940/calling-a-c-function-witha-a-varargs-argument-dynamicznie) –