我在Stephen G Kochan的书“C编程”中遇到过这段代码。这可能吗?
float absolute_value(x)
float x;
{
-----
-----
}
因此,正如您所看到的,参数x在使用方法参数后声明。这会在G ++中引发明显的编译错误。
那么,哪个C编译器支持这个呢?
答案 0 :(得分:3)
这是旧式的K& R格式。它实际上并没有声明参数x
,而是定义它的类型。默认情况下,除非另有说明,否则事件为int
。
当C是一种更简单的语言时,并没有从我心爱的BCPL中移除,这就是你给函数参数提供类型的方法。你年轻的whippersnappers认为这些原型的东西都不是理所当然的。
哦,是的,离开我的草坪: - )
答案 1 :(得分:1)
这是在C中声明函数参数类型的原始方式。任何正常运行的C编译器都需要接受它。但是,在C ++中不允许这样做,因此每个正常运行的C ++编译器都必须拒绝它(尽管在这两种情况下,请注意可能需要某些特定的编译器标志组合才能实现正常的功能)。曾几何时,C编译器仅接受了这种风格,并拒绝代码:float absolute_value(float x) {}
。当C被标准化时,它被添加(以及函数原型)。