-1

如果你有int foo(a_type first, ...)varargs 都是const char *(或其他一些指针类型)并且你可以从 first(或通过终止NULL指针)确定它们的数量,你能否以某种方式将此结构解释为数组(const char **)而不需要malloc实际数组并将指针复制到其中?参数不应该在堆栈上正确对齐,就像它们在数组中的位置一样吗?那是可移植的还是可以例如参数的顺序不同?

编辑:为了清楚起见,我不打算在生产代码中使用类似的东西。我只是好奇。

4

3 回答 3

1

你也许可以摆脱它。一阵子。

问题在于,在 C 语言中,您可以在未定义行为中摆脱很多东西,但这并不能使它们正确。

您的想法的一个问题是,C 不需要计算机具有任何称为“堆栈”的东西或在其上放置函数参数。它们不需要位于任何特定位置或顺序。

于 2013-10-24T00:23:20.137 回答
1

不,它不会是便携式的。就语言标准而言,您必须使用 varargs 函数和宏来访问变量参数,并且没有办法解决这个问题。

于 2013-10-24T00:23:25.050 回答
0

不; 不能保证变量参数列表将连续布置,因此您不能假设您的值将像在数组中一样布置。您必须使用va_*宏在列表中前进。

于 2013-10-24T01:08:13.973 回答