【问题标题】:C Standard - Is a function definition a function prototype?C 标准 - 函数定义是函数原型吗?
【发布时间】:2011-06-19 12:35:39
【问题描述】:

标准(最新版本:WG14/N1256)说(6.2.1 §2):

函数原型是声明其参数类型的函数的声明。

在此声明附近,我们还发现了标识符声明由声明符或类型说明符(§4)组成的证据:

每个其他标识符的范围由其声明的位置决定(在 声明符或类型说明符)。

因此,知道函数定义是否是函数原型似乎可以归结为知道函数定义是否是声明符。是吗?

我需要一个符合 C 标准的经过验证的答案。我并不真正关心通常的含义,或者维基百科或您最喜欢的 C 书籍所说的内容。

这是标准中让我认为函数定义确实可以是函数原型(§4)的声明:

如果声明标识符的声明符或类型说明符出现在函数原型的参数声明列表中(不是函数的一部分 定义),...

【问题讨论】:

  • 请注意,“声明其参数的类型”是为了区分函数原型与旧式 K&R 函数,后者没有这样做,例如int foo(x, y)int foo(int x, int y).

标签: c c99 prototype function-prototypes


【解决方案1】:

是的,参见 6.9.1 关于函数定义的第 7 段:

如果声明符包含参数 类型列表,该列表还指定 所有参数的类型;这样一个 声明器也用作函数 以后调用相同的原型 在同一个翻译单元中发挥作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多