我回答了这个问题我怎样才能让我的 va_list 参数重复自己?并注意到不常见的函数声明:
void ordered(int num1, double list ...);
首先,我认为编译器会抱怨,但 clang 3.2 没有,g++ 4.7.2 也没有。
这个声明扩展到什么?它被解释为什么?
编辑:我知道省略号。但是在示例中,正常形式<return type> <function-name>(<argument1-type> <arg-name>, ...);
是缺少逗号。
我回答了这个问题我怎样才能让我的 va_list 参数重复自己?并注意到不常见的函数声明:
void ordered(int num1, double list ...);
首先,我认为编译器会抱怨,但 clang 3.2 没有,g++ 4.7.2 也没有。
这个声明扩展到什么?它被解释为什么?
编辑:我知道省略号。但是在示例中,正常形式<return type> <function-name>(<argument1-type> <arg-name>, ...);
是缺少逗号。
这是 C++ 标准中的语法片段:
parameter-declaration-clause:
parameter-declaration-list[opt] ...[opt]
parameter-declaration-list , ...
如果是其他参数声明,基本上可以在省略号之前,
,但不必如此。函数声明:
void f(int,double...);
真正意思:
void f(int,double,...);
它与以下内容相同:
void ordered(int num1, double list, ...);
三个点 ( ...
) 称为“省略号”,表示变量参数列表。因此,您可以传递任意数量的参数(尽管存在操作系统指定的限制)。例如,以这种方式printf
工作。
请参阅此处以获取更多说明。
我猜你的意思是“……”对吧?
对于某些函数,不可能指定调用中预期的所有参数的数量和类型。通过使用省略号 (...) 终止参数声明列表来声明此类函数。