我有一些代碼,看起來像這樣:如何將數組作爲參數傳遞給可變參數函數?
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()是一個可變參數的功能。
有沒有更好的方法來做到這一點?
[更新] Aplogies to @ 0x69 et al。我省略了很多情況,LogEvent()不能將數組作爲參數。抱歉。
重構_LogEvent_接受'的LogEvent(1,活動,numActivities)' –
你也可以同樣通過所有這些,如果有幾個(例如最多4個)。 –
[使用varargs參數動態調用C函數](http://stackoverflow.com/questions/280940/calling-a-c-function-with-a-varargs-argument-dynamically) –