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
对象,并调用 vsscanf
。 vsscanf
然后使用 va_list
对象来跟踪检索项目时 "optional" 参数的位置。
所有可变参数函数都是这样工作的。
我正在尝试向 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
对象,并调用 vsscanf
。 vsscanf
然后使用 va_list
对象来跟踪检索项目时 "optional" 参数的位置。
所有可变参数函数都是这样工作的。