最近編譯遇到一個錯誤訊息 warning: function declaration isn’t a prototype,程式碼大概是像這樣:
hello.h
1
2
3
4
void foo()
{
printf("Hello World!\n");
}
hello.c
1
2
3
4
5
int main(int argc, char**argv)
{
foo();
return0;
}
這樣的程式碼應該再單純不過了,怎麼會說我的函式宣告(Declaration)並不為一個原型(Prototype)呢?
深入了解 ANSI C 才知道原來這與語言的發展史有關。
函式的宣告(Declaration)