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