1

我回答了这个问题我怎样才能让我的 va_list 参数重复自己?并注意到不常见的函数声明:

void ordered(int num1, double list ...);

首先,我认为编译器会抱怨,但 clang 3.2 没有,g++ 4.7.2 也没有。

这个声明扩展到什么?它被解释为什么?

编辑:我知道省略号。但是在示例中,正常形式<return type> <function-name>(<argument1-type> <arg-name>, ...);是缺少逗号。

4

5 回答 5

3

这是 C++ 标准中的语法片段:

parameter-declaration-clause:
  parameter-declaration-list[opt] ...[opt]
  parameter-declaration-list , ...

如果是其他参数声明,基本上可以在省略号之前,,但不必如此。函数声明:

void f(int,double...);

真正意思:

void f(int,double,...);
于 2013-03-27T13:46:42.223 回答
3

它与以下内容相同:

void ordered(int num1, double list, ...);
于 2013-03-27T13:41:44.403 回答
2
于 2013-03-27T13:48:16.570 回答
1

三个点 ( ...) 称为“省略号”,表示变量参数列表。因此,您可以传递任意数量的参数(尽管存在操作系统指定的限制)。例如,以这种方式printf工作。

请参阅此处以获取更多说明。

于 2013-03-27T13:42:22.267 回答
1

我猜你的意思是“……”对吧?

对于某些函数,不可能指定调用中预期的所有参数的数量和类型。通过使用省略号 (...) 终止参数声明列表来声明此类函数。

于 2013-03-27T13:42:57.810 回答