【发布时间】:2014-01-21 16:24:58
【问题描述】:
在 C++ 中,我可以定义一个具有可变数量参数的函数,如下所示:
void a(int a...) {
std::cout << a << std::endl;
}
然后这样称呼它:
a(100, 200, 300);
但是,显然我只能访问第一个参数:调用的输出是100。
如何使用此表示法访问其他参数?
【问题讨论】:
-
man
va_list作为起点。但是如果你想在 C++11 中做这样的事情,忘记上面的内容,而是查找variadic templates。 -
您熟悉
va_list或C 或C++ 中的可变参数函数吗?您可能想搜索va_list。 -
我什至不知道您可以使用 C 变量指定类型。在 C99 中看不到任何支持此功能的证据,但 GCC 4.8 编译它。
-
@LightnessRacesinOrbit:只有初始的非可变参数(其中必须至少有一个)指定了它们的类型。其他的是使用
va_arg宏的访问,这将任何类型检查留给程序员。 -
啊,这就是我想知道的。 Why is
int a...allowed?
标签: c++ arguments variadic-functions