您好,登錄后才能下訂單哦!
一直都以為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 test test.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++的函數聲明中省略參數的不同意義就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。