【发布时间】:2011-07-27 04:41:02
【问题描述】:
有人知道如何在经典 C 中传递变量参数吗?我今天做了一些调试,大多数常规参数都是通过堆栈传递的。但是,这似乎不适用于可变参数。这些参数是否像常量字符串一样存储在其他地方?
提前致谢!
【问题讨论】:
标签: c parameter-passing optional-parameters crt
有人知道如何在经典 C 中传递变量参数吗?我今天做了一些调试,大多数常规参数都是通过堆栈传递的。但是,这似乎不适用于可变参数。这些参数是否像常量字符串一样存储在其他地方?
提前致谢!
【问题讨论】:
标签: c parameter-passing optional-parameters crt
这取决于平台。 /usr/include/stdarg.h 是开始寻找细节的地方。
【讨论】:
stdarg.h 可能在其他地方。 +1,不过。
它们经常在堆栈上传递。您正在寻找的是您正在使用的平台的 ABI 规范。
对于 AMD64 平台,查看例如 here。
【讨论】:
【讨论】:
这是一个有趣的技巧
void func(type* values) {
while(*values) {
x = *values++;
/* do whatever with x */
}
}
func((type[]){val1,val2,val3,val4,0});
【讨论】: