【发布时间】:2017-10-02 13:19:49
【问题描述】:
C 中的声明和原型有什么区别?在哪些情况下它们被称为声明以及在哪些原型中?
【问题讨论】:
-
没有什么叫做变量原型。
-
所有函数原型也是声明。但有些声明不是原型。具体来说,如果函数参数列表没有指定参数的类型(或void),那么它就不是原型。
-
@M.M 而不是“(或 void)”,我认为您的意思是说“(或空)”。 K&R 2Ed., A8.6.3 Function Declarators 指出:“在新式声明中,参数列表指定参数的类型。作为一种特殊情况,新式函数的声明器具有没有参数具有仅由关键字
void组成的参数类型列表。”为了澄清“新风格”,第 202 页指出:“在新风格中,参数的类型是显式的,并且是函数类型的一部分;这样的声明也称为 函数原型。” -
@ClintPachl 我的意思是“或无效”。但也许我的句子可以用两种方式解析。如果列表不是原型,则“或无效”属于列表不能做的事情。换句话说:如果列表既没有指定参数的类型,也不是
(void),则它不是原型。 -
@M.M 你是对的。说“也不”有助于我理解我的误解。
标签: c language-lawyer declaration function-prototypes