这两个声明有区别吗?
int foo( int a, ... );
和
int foo( int a ... );
如果没有区别,那么第二个句法上有效的是什么?
答案 0 :(得分:2)
这是推测,但在C ++中,有一个没有其他参数的函数是有意义的,例如void f(...)
而在C中,这样的函数没有用(我知道),因此...
必须遵循其他参数,因此,逗号。
从语法的角度来看,简单地允许void f( int a ... )
并赋予它明显的意义比禁止它更简单,它不会给编译器编写者造成太大负担或者对程序员造成任何混淆
(我原本以为这可能与使参数包的语法更加规则有关,但我发现它在任何情况下都在C ++ 03中明确允许。)