How to wrap a function with variable length arguments?

后端 未结 7 2052
借酒劲吻你
借酒劲吻你 2020-12-05 12:54

I am looking to do this in C/C++.

I came across Variable Length Arguments but this suggests a solution with Python & C using libffi.

Now, if I want to wr

相关标签:
7条回答
  • 2020-12-05 13:37

    the problem is that you cannot use 'printf' with va_args. You must use vprintf if you are using variable argument lists. vprint, vsprintf, vfprintf, etc. (there are also 'safe' versions in Microsoft's C runtime that will prevent buffer overruns, etc.)

    You sample works as follows:

    void myprintf(char* fmt, ...)
    {
        va_list args;
        va_start(args,fmt);
        vprintf(fmt,args);
        va_end(args);
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        int a = 9;
        int b = 10;
        char v = 'C'; 
        myprintf("This is a number: %d and \nthis is a character: %c and \n another number: %d\n",a, v, b);
        return 0;
    }
    
    0 讨论(0)
提交回复
热议问题