【发布时间】:2019-09-01 01:40:25
【问题描述】:
我对具有可变数量参数的函数的语义有误解。 6.5.2.2(p6):
如果函数是用包含原型的类型定义的, 并且原型以省略号 (, ...) 或 提升后的参数类型与 参数的类型,行为未定义。
这不是很清楚。原型下面的函数定义中是否以省略号结尾?
void foo(int i, ...){
//...
}
一开始我以为是参数列表只包含省略号的函数,比如
void foo(...){
//...
}
但是这个案例是6.9.1(p8)描述的:
如果定义了一个接受可变数量参数的函数 如果没有以省略号结尾的参数类型列表,则 行为未定义
所以我真的不明白他们的意思是什么
原型以省略号 (, ...) 结尾
6.5.2.2(p6)
【问题讨论】:
标签: c function language-lawyer ellipsis