在6.5.2.2.6 $的C11标准:这条语句在C11标准(关于可变参数函数)中意味着什么?
如果表示所调用的函数的表达具有类型 不包括原型,整数提升上 执行的每个参数,并且该参数将类型浮点数提升为 双。这些被称为默认参数促销。如果参数个数不等于参数个数,则 行为未定义。 如果函数的定义类型为 包含原型,并且原型以省略号 (,...)结尾,或者升级后的参数类型不是 与参数类型兼容,行为是未定义的 。如果使用不包含原型 的类型定义函数,并且升级后 之后的参数类型与升级之后的参数类型不兼容,则 行为未定义,但以下情况除外:。 ..
这是什么意思 - 我真的无法理解它(特别是第一部分)。从我可以然而,这意味着定义一个函数是这样的:
void func(int a, int b, ...)
{
}
,然后调用它是未定义的行为我认为这是愚蠢的。
这个C标准很奇怪。您向我展示的所有这些省略号涉及哪些部分?因为它们存在于我强调的标准声明中。 – AnArrayOfFunctions
@FISOCPP您突出显示的句子提到了两种情况,其中一种涉及'...'参数。 Vaughn Cato的例子是指另一种情况。 – fuz
@FISOCPP:你突出显示的部分是针对两种不同的情况。我已经将我的答案扩展到包括elipses案例。 –