在C中使用“void”
我很困惑为什么我们需要将void
传递给C函数:
int f(void) { return 0; }
与
int f() { return 0; }
做什么是正确的,为什么?
在C中, int f()
是旧式声明。 它说f
期望一个固定但未指定的数字和类型的参数。 例如,给定int f() { return 0; }
编译器不会抱怨f(42)
或f("hello, world")
(尽管这种调用的行为是未定义的)。
int f(void)
明确表示f
不带参数。
(C ++有不同的规则; Stroustrup并不关心与旧C代码的向后兼容性。)
这是C的遗迹。
f(void)
不带参数,因此f(1)
无效。
f()
表示参数未指定,因此f(1)
在此处有效。
在这种情况下的void
仅仅意味着“没有参数”。 我不确定你的第二个案例是否会编译,但无论哪种方式,我都希望第一个案例尽可能清楚。 当然,在调用f
,只需使用空括号:
int x = f();