在C中传递变量参数

时间:2011-03-31 19:39:09

标签: c parameter-passing optional-parameters crt

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

提前致谢!

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

对于AMD64平台,请查看示例here

答案 2 :(得分:1)

你的意思是Variable-Length Argument Lists

答案 3 :(得分:0)

这是一个有趣的技巧

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

func((type[]){val1,val2,val3,val4,0});