[英]function declaration inside main and also outside main in 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 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);
}
甚至:
#include<stdio.h>
void foo(int i)
{
printf("2 ");
}
void f()
{
foo(1);
}
int main()
{
foo(1);
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.