C头文件中的无类型参数

时间:2015-04-02 08:58:51

标签: c kernel

我正在尝试向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,也不是这样使用的。它的类型是什么?

1 个答案:

答案 0 :(得分:1)

  

那它有什么类型?

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

如果你这样做

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

通常sscanf会创建va_list个对象,并调用vsscanfvsscanf然后使用va_list对象来跟踪检索项目时“可选”参数的位置。

所有变量参数函数都是这样的。