如何将数组作为参数传递给vararg函数?

Maw*_*awg 9 c variadic-functions

我有一些看起来像这样的代码:

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
}
Run Code Online (Sandbox Code Playgroud)

其中LogEvent()是一个varargs函数.

有没有更优雅的方式来做到这一点?


[更新] Aplogies @ @ 0x69等.我没有说,有很多情况下LogEvent()无法将数组作为参数.抱歉.

eca*_*mur 3

没有标准的方法来构造或操作va_args参数,甚至将它们传递给另一个函数(操作可变参数的标准方法?C 编程:转发变量参数列表)。您最好看看是否可以访问 的内部例程LogEvent