gpt4 book ai didi

c - 在没有 stdarg 的情况下访问可变函数参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:07 24 4
gpt4 key购买 nike

有没有什么方法可以使用指针访问函数中的可变参数?我试着做类似的事情

void test(int p, ...)
{
int firstarg = *(&p - 1);
}

但这不起作用。

va_start 和 va_arg 如何访问这些参数?

最佳答案

没有可移植的方法来做到这一点——也没有充分的理由使用任何不可移植的方法(除非您实际上是为新系统编写 <stdarg.h>)。

<stdarg.h> 中定义的宏必须以某种方式实现。您可以为您的实现检查该 header 的内容,并可能重现它们所做的事情——但结果可能不适用于其他系统。

如果你很好奇 va_startva_arg如果它们在您的系统上实现,您可以采用一个使用它们的程序并仅通过预处理器阶段运行它。如果您使用的是 gcc,则 gcc -E会这样做。但是在某些系统上,它们可能是根据特定于编译器的扩展来实现的,因此结果可能不会告诉您太多信息。

好奇心很好,但在这种特殊情况下,您真正​​需要知道的是 <stdarg.h> 中定义的宏按规定工作。

关于c - 在没有 stdarg 的情况下访问可变函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com