第一个程序编译得正确.第二个程序给出了错误,说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);
}
Run Code Online (Sandbox Code Playgroud)
第二个程序:
void foo();
int main()
{
void foo(int);
foo();
return 0;
}
void foo()
{
printf("2 ");
}
void f()
{
foo();
}
Run Code Online (Sandbox Code Playgroud)
该内部声明在隐藏声明全局范围.第二个程序失败,因为声明void foo(int);隐藏了全球声明void foo();; 所以当你foo在main内心说你指的是那个int作为论据的人.
| 归档时间: |
|
| 查看次数: |
10302 次 |
| 最近记录: |