函数参数声明问题来自C编程,Stephen Kochan

时间:2010-08-02 06:21:43

标签: c

我在Stephen G Kochan的书“C编程”中遇到过这段代码。这可能吗?

float absolute_value(x)
float x;
{
   -----
   -----
}

因此,正如您所看到的,参数x在使用方法参数后声明。这会在G ++中引发明显的编译错误。

那么,哪个C编译器支持这个呢?

2 个答案:

答案 0 :(得分:3)

这是旧式的K& R格式。它实际上并没有声明参数x,而是定义它的类型。默认情况下,除非另有说明,否则事件为int

当C是一种更简单的语言时,并没有从我心爱的BCPL中移除,这就是你给函数参数提供类型的方法。你年轻的whippersnappers认为这些原型的东西都不是理所当然的。

哦,是的,离开我的草坪: - )

答案 1 :(得分:1)

这是在C中声明函数参数类型的原始方式。任何正常运行的C编译器都需要接受它。但是,在C ++中不允许这样做,因此每个正常运行的C ++编译器都必须拒绝它(尽管在这两种情况下,请注意可能需要某些特定的编译器标志组合才能实现正常的功能)。曾几何时,C编译器接受了这种风格,并拒绝代码:float absolute_value(float x) {}。当C被标准化时,它被添加(以及函数原型)。