Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将省略运算符得到的参数传递给其他函数?_C++_Printf_Ellipsis - Fatal编程技术网

C++ 如何将省略运算符得到的参数传递给其他函数?

C++ 如何将省略运算符得到的参数传递给其他函数?,c++,printf,ellipsis,C++,Printf,Ellipsis,在这段代码中,我尝试将参数从省略号传递到printf。它编译但打印垃圾,而不是78。正确的方法是什么?两个问题: 首先,您不需要初始化vl,而是使用它。以后别忘了用 另一个问题是,printf不接受va_列表参数。用这个 首先初始化vl va_启动(vl,1)//参数数量=1 然后从中取出int printf(格式,va_arg(vl,int))您需要执行以下操作: void myPrintf(const char* format, ...) { // some code va_

在这段代码中,我尝试将参数从省略号传递到
printf
。它编译但打印垃圾,而不是78。正确的方法是什么?

两个问题:

  • 首先,您不需要初始化
    vl
    ,而是使用它。以后别忘了用

  • 另一个问题是,
    printf
    不接受
    va_列表
    参数。用这个


  • 首先初始化
    vl

    va_启动(vl,1)//参数数量=1

    然后从中取出
    int


    printf(格式,va_arg(vl,int))

    您需要执行以下操作:

    void myPrintf(const char* format, ...) {
        // some code
        va_list vl;
        printf(format, vl);
    }
    
    int main() {
        myPrintf("%d\n", 78);
    }
    

    请注意使用
    vprintf
    而不是
    printf

    ,因为
    vl
    不是初始值。如何初始化vl我不知道参数的计数。我应该把%的符号算进去吗format@Ashot查看我的最新答案,并点击参考链接。
    void myPrintf(const char *format, ...) {
        va_list vl;
        va_start(vl, format);
        vprintf(format, vl);
        va_end(vl);
    }