这声明了什么“void func(bool b..)”
What does this declare `void func(bool b ...)`?
我回答了这个问题如何让我的va_list参数重复?并注意到不常见的函数声明:
void ordered(int num1, double list ...);
起初我以为编译器会抱怨,但clang 3.2没有,g++4.7.2也没有。
这份声明扩展到了什么?它被解释为什么?
编辑:我知道省略号。但是正常形式是<return type> <function-name>(<argument1-type> <arg-name>, ...);
,在这个例子中缺少逗号。
它与相同
void ordered(int num1, double list, ...);
这是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 ...);
与相同
void ordered(int num1, double list, ...);
参考:
标准C++11 8.3.5.3/4:
parameter-declaration-clause:
parameter-declaration-listopt ...opt
parameter-declaration-list , ...
如果
parameter-declaration-clause
以省略号或函数参数包(14.5.3(终止,则参数数量应等于或大于没有默认参数且不是函数参数包的参数数量。在语法正确且“...”
不是abstract-declarator
的一部分的情况下,“, ...”
与“...”
同义
三个点(...
(被称为"省略号",表示变量参数列表。因此,您可以传递任意多的参数(不过,有一个操作系统指定的限制(。例如,printf
就是这样工作的。
请参阅此处以获得进一步的解释。
我猜你的意思是"…"对吧?
对于某些函数,无法指定调用中预期的所有参数的数量和类型。这样的函数是通过用省略号(…(终止参数声明列表来声明的。
相关文章:
- 写入向量<向量<bool>>
- 让bool方法返回其他整数
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- Arduino-C++ bool 不会从 false 变为 true
- 表观调用前面的表达式必须具有指向 func 类型的指针
- 为什么在这种情况下,bool 类型的输出等于 0?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 错误:不能使用"显式"说明符声明 bool'
- 为什么 C++ 11 在 ios 类中添加了运算符 bool
- 从标准::字符串到标准::矢量<bool>的快速转换
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 通过 mpi 发送 c++ 标准::矢量<bool>
- 为什么使用Pool和Bool而不是int8_t或char
- 如何为地图< map<int,int> 、bool > 分配值?
- 为什么更改包含 psapi.h 的顺序会产生编译错误?(标识符 BOOL 未定义)
- 不能在 if 语句 - c++ 中使用 void func 直接将字符串转换为大写
- 使用 bool 和 const char 重载的 C++ 函数会在没有警告的情况下产生歧义 (MSVC2012)
- 返回 bool 作为 CPP 中 bool 运算符 [] 中的值
- 如何告诉自动推断向量<bool>元素的非引用类型
- 这声明了什么“void func(bool b..)”