我正在尝试向FreeBSD 9.3.0
系统添加系统调用。我在头文件/usr/src/sys/sys/systm.h
中找到了这一行:
int vsscanf(const char *, char const *, __va_list) __nonnull(1) __nonnull(2);
我的问题是关于__va_list
参数。我在无类型参数上看到了类似的问题,但他们说它们被编译器假定为int
并且也不再使用。但我知道__va_list
不是integer
,也不是这样使用的。它的类型是什么?
答案 0 :(得分:1)
那它有什么类型?
__va_list
没有类型, 类型。该函数声明缺少其他参数的变量名称。
如果你这样做
int a, b, c;
sscanf("1 2 3", "%d %d %d", &a, &b, &c);
通常sscanf
会创建va_list
个对象,并调用vsscanf
。 vsscanf
然后使用va_list
对象来跟踪检索项目时“可选”参数的位置。
所有变量参数函数都是这样的。