一直都以為C/C++中形如
int func();
這樣的函數聲明其意義就是一個參數 void(沒有參數)的函數。然而今天在看C++的時候突然看到這么一句:
對于帶空參數表的函數,C和C++有很大的不同。在C語言中,聲明int func2();表示“一個可帶任意參數(任意數目,任意類型)的函數”。這就妨礙了類型檢查。而在C++語言中它就意味著“不帶參數的函數”。
這一點老師并沒有講到,學校教科書里也沒有提到,帶著好奇心,我特意試了一下
test.c
#include <stdio.h>void fun();int main(){ fun(1, 1); return 0;}void fun(int a, int b){ printf("%d/n", a+b);}
編譯通過$ gcc -Wall test.c -o test$ ./test 2
$ mv test.c test.cpp$ g++ -Wall test.cpp -o testtest.cpp: 在函數‘int main()'中:test.cpp:6:10: 錯誤:too many arguments to function ‘void fun()' fun(1, 1); ^test.cpp:3:6: 附注:在此聲明 void fun(); ^~~
這也解釋了為什么主函數要寫成這樣的原因
int main(void)
以上這篇詳談C與C++的函數聲明中省略參數的不同意義就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答