2

有人知道如何在经典 C 中传递变量参数吗?我今天做了一些调试,大多数常规参数都是通过堆栈传递的。但是,这似乎不适用于可变参数。这些参数是否像常量字符串一样存储在其他地方?

提前致谢!

4

4 回答 4

3

这取决于平台。 /usr/include/stdarg.h是开始寻找细节的地方。

于 2011-03-31T19:41:21.803 回答
2

它们经常在堆栈上传递。您正在寻找的是您正在使用的平台的 ABI 规范。

对于 AMD64 平台,请在此处查看示例。

于 2011-03-31T19:41:48.653 回答
1

你的意思是变长参数列表

于 2011-03-31T19:40:37.010 回答
0

这是一个有趣的技巧

void func(type* values) {
    while(*values) {
        x = *values++;
        /* do whatever with x */
    }
}

func((type[]){val1,val2,val3,val4,0});
于 2011-11-27T04:36:16.617 回答