我剛剛注意到GCC的行爲,這對我來說似乎很陌生(未與其他編譯器一起檢查過)。調用帶有太多參數的函數時的GCC行爲
如果我編譯此代碼:
#include <stdio.h>
void foo(int i)
{
printf("Hello %d\n",i);
}
int main(){
foo(1, 2);
return 0;
}
我會得到一個編譯錯誤:
test.c:9:5: error: too many arguments to function ‘foo’
但如果我編譯此代碼:
#include <stdio.h>
void foo()
{
printf("Hello\n");
}
int main(){
foo(1, 2);
return 0;
}
我沒有得到任何錯誤或警告。
有人能解釋我爲什麼嗎?
我用gcc 4.6.3試用了一下手臂,無 - EABI-GCC 4.8.3
編輯:我編譯所有的警告:gcc -Wall test.c
加上'-pedantic'獲得更多的警告 – mch
@mch謝謝你的提示,在這種情況下,它不會警告任何 – Quentin
您需要-Wstrict的原型讓海灣合作委員會警告它。 –