Calling a C function with a varargs argument dynamically

前端 未结 10 1437
太阳男子
太阳男子 2020-12-05 11:45

I am programming in C against a third party library (in HP/Mercury Loadrunner) that allows a varargs-style variable size argument list for one of it\'s functions. I want to

10条回答
  •  北荒
    北荒 (楼主)
    2020-12-05 12:04

    Write it once with the preprocessor and never look back.

    #define WEB_SUBMIT_BUFFER(name, val)         \
        do {                                     \
            const int size = 129;                \
            int i = 0;                           \
            int j = 11;                          \
            web_submit_data(&(name)[i++ * size], \
                            &(name)[i++ * size], \
            /* etc ad nauseum */                 \
        } while (0)
    

    Or if the number of arguments is fixed for each specific call, write a script to generate preprocessor defines to hide how heinous that call is.

    #define WEB_SUBMIT_BUFFER_32(name, val)      \
        do {                                     \
            const int size = 129;                \
            int i = 0;                           \
            int j = 11;                          \
            web_submit_data(&(name)[i++ * size], \
                            &(name)[i++ * size], \
            /* 32 times */                       \
        } while (0)
    #define WEB_SUBMIT_BUFFER_33(name, val) ...
    #define WEB_SUBMIT_BUFFER_34(name, val) /* etc */
    

提交回复
热议问题