【问题标题】:Declaring function parameters after function name在函数名后声明函数参数
【发布时间】:2009-07-20 01:30:55
【问题描述】:
int func(x)
int x;
{
    .............

这种声明叫什么?

何时有效/无效,包括 C 或 C++、某些标准修订版和编译器?

【问题讨论】:

    标签: c parameters declaration


    【解决方案1】:

    即K&R C参数声明语法,在ANSI C中有效,在C++中无效。

    【讨论】:

      【解决方案2】:

      它仍然有效,但它是 pre-ANSI。这实际上是 K&R 缩进样式得名的地方。左括号在功能块之后的那一行,因为这看起来很奇怪:

      int func(x)
      int x; {
      ...
      }
      

      反正不推荐这种风格,因为a problem with function prototypes

      【讨论】:

        【解决方案3】:

        K&R 风格,我认为它仍然有效,尽管不鼓励。它可能来自 Fortran(在最近的 F95 中仍然在函数体内定义了函数参数类型)

        【讨论】:

          【解决方案4】:

          那是老式的 C。现在很少见到了。

          【讨论】:

            【解决方案5】:

            这是一个函数原型。如果您不这样做,则必须在 main 之前将函数完全写出,否则编译器将不知道您在 main 中使用该函数是什么。它不是很具有描述性,因此不再使用。你会想使用类似的东西:

            int someFunction(int someParamX int someParamY);
            

            【讨论】:

            • 问题中给出的例子其实是一个函数definition,注意int func(x)后面少了一个分号。
            • 没有什么可以阻止函数定义拥有原型。但是显示的函数定义没有原型。所以我也是-1
            猜你喜欢
            • 2012-11-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多