C 头文件中的无类型参数

Untyped Arguments in C header files

我正在尝试向 FreeBSD 9.3.0 添加系统调用 system.And 我在头文件 /usr/src/sys/sys/systm.h 中找到了这一行:

int vsscanf(const char *, char const *, __va_list) __nonnull(1) __nonnull(2);

我的问题是关于 __va_list argument.I 已经看到关于无类型参数的类似问题,但他们说它们被编译器假定为 int 并且也没有使用 anymore.But 我知道 __va_list 不是 integer 并且不用作 such.So 它有什么类型?

So what type does it have?

__va_list 没有类型,它 类型。该函数声明也缺少其他参数的变量名。

如果你这样做

int a, b, c;
sscanf("1 2 3", "%d %d %d", &a, &b, &c);

通常 sscanf 创建 va_list 对象,并调用 vsscanfvsscanf 然后使用 va_list 对象来跟踪检索项目时 "optional" 参数的位置。

所有可变参数函数都是这样工作的。