这个奇怪的函数定义是什么意思?
我在博客文章中遇到了这个C程序:
main() { int n; n = 151; f(n); } f(x) int x; { printf("%d.\n", x); }
这篇文章没有解释。 任何人都可以解释这个奇怪的函数定义意味着什么吗?
这是K&R风格的C代码,它仍然是有效的C语法,但我建议你不要在新编写的代码中使用它。
f(x) int x;
相当于ANSI C:
void f(int x)
K&R C是Brian Kernighan和Dennis Ritchie在C编程语言第一版中描述的C语言,并以两位作者的名字命名。 本书的第二版更新为使用ANSI C.
f(x) int x; { printf("%d.\n", x); }
是一种定义function的旧方法。 现在它可以被解读为
void f(int x) { printf("%d.\n", x); }
这段代码很糟糕。
- function
f()
过时声明 - 在
main()
之前应该有f()
前向声明 -
f()
缺少返回类型
请更改您的c学习资源!
这是一种非常古老的C风格(K&R C)。
f(x) int x; {}
相当于
void f(int x) {}
你真的不应该浪费时间去学习那些。
寻找教授ANSI C C89 / C90的资料,并注意到C99的新function(许多编译器没有广泛采用,所以要了解不同之处)
这是一种非常古老的编码风格。 这在ANSI中不起作用。 更好地使用像
void f(int x) { ... ... ...;/*Whatever is required*/ }