有人知道经典C中如何传递变量参数吗?我今天做了一些调试,大多数常规参数都是通过堆栈传递的。但是,这似乎不适用于变量参数。这些参数是否存储在其他地方,如常量字符串?
提前致谢!
答案 0 :(得分:3)
这取决于平台。 /usr/include/stdarg.h
是开始寻找详细信息的地方。
答案 1 :(得分:2)
它们经常被传递到堆栈中。您正在寻找的是您正在使用的平台的ABI规范。
对于AMD64平台,请查看示例here。
答案 2 :(得分:1)
答案 3 :(得分:0)
这是一个有趣的技巧
void func(type* values) {
while(*values) {
x = *values++;
/* do whatever with x */
}
}
func((type[]){val1,val2,val3,val4,0});