How can I pass an array as parameters to a vararg function?

前端 未结 2 1614
失恋的感觉
失恋的感觉 2021-01-11 19:51

I have some code that looks like this:

uint8_t activities[8];
uint8_t numActivities = 0;
...
activities[numActivities++] = someValue;
...
activities[numAct         


        
相关标签:
2条回答
  • 2021-01-11 20:31

    There's no standard way to construct or manipulate va_args arguments, or even pass them to another function (Standard way to manipulate variadic arguments?, C Programming: Forward variable argument list). You'd be better off seeing if you can access the internal routines of LogEvent.

    0 讨论(0)
  • 2021-01-11 20:35

    pass a pointer to the array of ints and a number of ints instead

    #include <stdio.h>
    
    void logevent(int n, int num, int *l) {
        int i;
        for (i=0; i<num; i++) {
            printf("%d %d\n",n,*(l++));
        }
        }
    
    int main() {
    
        int activities[8];
        activities[0]=2;
        activities[1]=3;
        activities[2]=4;
        int num=3;
        int n=1;
        logevent(n,num, activities);
        printf("=========\n");
        n=2;
        activities[3]=5;
        num=4;
        logevent(n,num, activities);
    
    }
    
    0 讨论(0)
提交回复
热议问题