【发布时间】:2020-09-01 18:45:43
【问题描述】:
我正在阅读默认参数提升的 C 标准,并且对很多问题感到困惑。 This question 以适当的方式显示了我怀疑的所有段落。
首先在第 6 段第 3 点中,它说如果原型以省略号结尾,则行为未定义。现在我的疑问是,如果我们谈论printf,它的原型也以省略号结尾,但它的行为不是未定义的,实际上它遵循第 6 段的第 1 点。标准在这里试图解释什么?并且进一步说,如果提升后的参数类型与参数的类型不兼容,则行为未定义。现在我的疑问是,如果参数已经在函数原型中声明为什么首先争论得到提升。
比第6段第4点,它说提升后的参数类型与提升后的参数类型不兼容,行为未定义。在这里,提到该函数没有原型,那么他们到底在谈论什么参数?以及如何提升参数。我只研究过论点提升。
比第 7 点第 1 段中的这一行意味着什么:将每个参数的类型作为其声明类型的非限定版本。
我真的很难理解这一切。如果你能用恰当的例子一一解释所有观点,那将是非常有帮助的。我不是以英语为母语的人,如果我对某些标准的观点有误解,也请指出错误。
【问题讨论】:
标签: c prototype standards integer-promotion promotions