Tôi có một số mã mà trông như thế này:Làm thế nào tôi có thể truyền một mảng làm tham số cho một hàm 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
}
nơi LogEvent() là một hàm varargs.
Có cách nào hay hơn để thực hiện việc này không?
[Cập nhật] Aplogies to @ 0x69 et al. Tôi bỏ qua để nói rằng có nhiều trường hợp mà LogEvent() không thể lấy một mảng làm tham số. Lấy làm tiếc.
Refactor _LogEvent_ chấp nhận 'LogEvent (1, hoạt động, numActivities) ' –
Bạn có thể chỉ cần cũng vượt qua tất cả trong số họ, nếu có rất ít (ví dụ: 4 max). –
Có thể trùng lặp của [Gọi hàm C với đối số varargs động] (http://stackoverflow.com/questions/280940/calling-a-c-function-with-a-varargs-argument-dynamically) –