我有一个参数数量未知的函数。 我试图通过C来做它并没有用。
我需要算一下它们的数量。 我假设它可以与堆栈一起使用。 所以我怎么算他们.. ??
感谢
答案 0 :(得分:1)
“未知数量的参数”你的意思是这样的:
void some_function(int first_arg, ...);
明确的答案是:在这种情况下,不可以获得参数数量。
某些版本的GCC不会“推送”堆栈上的参数,而是保留一些堆栈内存,然后将参数写入xxx(%ESP)。
在这种情况下,以下代码:
printf("%u, %u, %u, %u\n", 1, 2, 3, 4);
printf("%u, %u, %u, %u\n", 1);
将导致两个非常相同的“printf”调用(因为数字2,3和4仍在堆栈中)。