#include <stdio.h>
int main()
{
void foo(), f();
f();
}
void foo()
{
printf("2 ");
}
void f()
{
printf("1 ");
foo();
}
输出:
1 2
这里的声明是如何工作的? 如果我在 foo() 之前定义 F(),我就会出错。
错了!
#include <stdio.h>
int main()
{
void foo(), f();
f();
}
void f()
{
printf("1 ");
foo();
}
void foo()
{
printf("2 ");
}
错误
> main.c: In function 'f': main.c:21:13: error: incompatible implicit
> declaration of function 'foo'
> foo();
> ^ main.c:7:18: note: previous implicit declaration of 'foo' was here
> void foo(), f();
^
为什么会这样?
最佳答案
这是一个范围问题。在第一个示例中,foo
和 f
是 main 已知的,因为您声明了它们。 f()
知道 foo
因为它是在它之前声明的。
在你的第二个例子中,f
和 foo
的声明是局部于 main 的,f()
不知道 foo
因为它没有在它之前声明。
关于c - 一次声明多个函数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21464484/