我在a blog post中看到了这个C程序:
main()
{
int n;
n = 151;
f(n);
}
f(x)
int x;
{
printf("%d.\n", x);
}
这篇文章没有解释。任何人都可以解释这个奇怪的函数定义意味着什么吗?
答案 0 :(得分:10)
这是K& R风格的C代码,它仍然是有效的C语法,但我建议你不要在新编写的代码中使用它。
f(x)
int x;
等同于ANSI C:
void f(int x)
K&R C是Brian Kernighan和Dennis Ritchie在本书第一版C programming language中描述的C语言,并以两位作者的名字命名。本书的第二版更新为使用ANSI C。
答案 1 :(得分:6)
f(x)
int x;
{
printf("%d.\n", x);
}
是一种定义函数的旧方法。现在它可以读作
void f(int x)
{
printf("%d.\n", x);
}
答案 2 :(得分:1)
这段代码很糟糕。
f()
f()
main()
的前瞻性声明
f()
答案 3 :(得分:0)
请更改您的学习资源!
这是一种非常古老的C风格(K& R C)。
f(x)
int x;
{}
相当于
void f(int x)
{}
你真的不应该浪费时间去学习它。
寻找教授ANSI C C89 / C90的资料,并注意C99的新功能(许多编译器都没有广泛采用,所以要知道差异)
答案 4 :(得分:-2)
这是一种非常古老的编码风格。这在ANSI中不起作用。 更好地使用像
这样的东西void f(int x)
{
... ... ...;/*Whatever is required*/
}