C中main内部和main外部的函数声明
第一个程序编译正确。第二个程序出错,表示foo的参数太少。。。 两个程序中的编译器是否都忽略了全局声明 第一个节目:C中main内部和main外部的函数声明,c,C,第一个程序编译正确。第二个程序出错,表示foo的参数太少。。。 两个程序中的编译器是否都忽略了全局声明 第一个节目: #include<stdio.h> void foo(); int main() { void foo(int); foo(1); return 0; } void foo(int i) { printf("2 "); } void f() { foo(1); } void foo(); int main() { void f
#include<stdio.h>
void foo();
int main()
{
void foo(int);
foo(1);
return 0;
}
void foo(int i)
{
printf("2 ");
}
void f()
{
foo(1);
}
void foo();
int main()
{
void foo(int);
foo();
return 0;
}
void foo()
{
printf("2 ");
}
void f()
{
foo();
}
内部声明隐藏全局范围内的声明。第二个程序失败,因为声明
void foo(int)代码>隐藏全局声明void foo()代码>;因此,当你在main
中说foo
时,你指的是以int
作为参数的那一个。我看到你研究了内部声明的具体行为,但为什么不:
#include<stdio.h>
void foo(int);
int main()
{
foo(1);
return 0;
}
void foo(int i)
{
printf("2 ");
}
void f()
{
foo(1);
}
#包括
void foo(int);
int main()
{
傅(1),;
返回0;
}
空富(内部一)
{
printf(“2”);
}
void f()
{
傅(1),;
}
甚至:
#include<stdio.h>
void foo(int i)
{
printf("2 ");
}
void f()
{
foo(1);
}
int main()
{
foo(1);
return 0;
}
#包括
空富(内部一)
{
printf(“2”);
}
void f()
{
傅(1),;
}
int main()
{
傅(1),;
返回0;
}
但我想知道内部声明是如何工作的?编译器总是忽略全局的吗?如在f-()函数中,如果它调用FULL(),它为什么不考虑全局声明?@ USE1315833:一个内部声明总是隐藏同一个名称的外部声明,因此编译器甚至不能看到外部声明(如它的隐藏)。