【发布时间】:2013-01-20 06:50:00
【问题描述】:
我有一些看起来像这样的代码:
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
}
其中 LogEvent() 是一个可变参数函数。
有没有更优雅的方式来做到这一点?
[更新] 向@0x69 等人致歉。我没有说 LogEvent() 在很多情况下不能将数组作为参数。对不起。
【问题讨论】:
-
重构 LogEvent 以接受
LogEvent(1, activities, numActivities) -
如果数量很少(例如最多 4 个),您也可以全部通过。
标签: c variadic-functions