gpt4 book ai didi

c - 未知类型的可变参数

转载 作者:太空狗 更新时间:2023-10-29 16:00:27 26 4
gpt4 key购买 nike

使用 stdarg.h,我只能提取一种类型,因为我必须知道我正在检索的类型。那么,printf 如何成为任何类型的可变参数函数,在 C 中也不异常(exception)?

最佳答案

printf() 使用格式字符串在运行时确定要提取哪种类型的参数。

我还没有查看 printf() 的源代码,但一种可能的实现可能包含如下所示的开关:

switch (type_specifier)
{
case 's':
str = va_arg(args, char *);
/* output str as a string */
break;
case 'd':
number = va_arg(args, int);
/* output number as a decimal value */
break;
etc.
etc.
etc.
}

请注意,当您考虑所有各种类型的参数时,完整的实现将比这复杂得多,参数可以是各种大小,事实上“%*d”使用了额外的 va_arg()获取数字的宽度,宽度说明符也可以改变输出。

关于c - 未知类型的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51489249/

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